↓ Aller au contenu

HTML2Shell : démêler la confusion entre Kirby et Brotli

·1183 mots·6 mins
Cryptolab.re
Auteur
Cryptolab.re
Cryptolab est un blog personnel où je documente mes expérimentations techniques : infra, self-hosting, réseau, crypto et projets parfois inutiles, souvent instructifs.
Sommaire

L’association entre « HTML2Shell » et CVE-2026-42069 est erronée : ce numéro concerne un défaut d’autorisation dans Kirby CMS. La faille du décodeur Brotli permettant une corruption mémoire, avec un risque d’exécution de code, porte un autre numéro : CVE-2026-111497. Pour savoir quoi mettre à jour, il faut distinguer ces deux problèmes et vérifier les composants réellement déployés.

En bref
#

  • CVE-2026-42069 concerne Kirby CMS et l’accès à certaines informations par des utilisateurs déjà connectés au Panel.
  • CVE-2026-111497 concerne le décodeur Brotli, notamment embarqué dans Node.js. L’application doit lui transmettre des données malveillantes à décompresser.
  • Le fait de servir des pages HTML ne suffit pas à établir une exposition à l’une ou l’autre de ces vulnérabilités.

Ce que recouvre la page « HTML2Shell »
#

La page de Penligent consacrée à HTML2Shell, consultée le 25 octobre 2026, est un fact-check. Elle conteste précisément l’association entre ce nom, CVE-2026-42069 et une prétendue exécution de code universelle via HTML. Elle ne présente pas de démonstration d’un tel exploit.

Le registre CVE identifie Kirby et un défaut de contrôle des autorisations. L’avis des mainteneurs a été publié le 23 avril 2026 ; l’enregistrement CVE date du 9 mai. Ce n’est donc pas une nouvelle vulnérabilité HTML publiée en octobre.

Le nom prête à confusion, mais la vérification est assez simple : le produit, les prérequis et les correctifs doivent correspondre au même avis. Un suffixe « 2Shell » n’est pas une description technique.

Kirby : des lectures sans les permissions attendues
#

Dans les versions concernées, un utilisateur authentifié au Panel peut accéder au modèle du site ainsi qu’à des informations sur les utilisateurs et les rôles, sans les restrictions attendues. Selon l’avis officiel de Kirby, les opérations d’écriture disposaient déjà de contrôles et ne sont pas affectées par cette CVE.

L’impact dépend de la séparation voulue entre les comptes. Si tous les utilisateurs sont autorisés à consulter ces informations, les mainteneurs indiquent que le site n’est pas affecté par ce problème de confidentialité. Avec des contributeurs aux droits limités, cette séparation compte. La sévérité annoncée est élevée, avec un score CVSS v4.0 de 7,1.

Versions Kirby affectéesPremière version corrigée
4.8.0 et antérieures4.9.0
5.0.0 à 5.3.35.4.0

Les notes de Kirby 5.4.0 détaillent l’ajout des permissions site.access, user.access, users.access, user.list et users.list, ainsi que leur application dans le Panel et l’API. Kirby 4.9.0 rétroporte les correctifs de sécurité.

Pour un site géré avec Composer, placez-vous à la racine de la version déployée, avec un compte autorisé à lire ses fichiers, puis lancez cette commande de consultation :

composer --no-plugins --no-scripts show getkirby/cms

La ligne versions donne la version installée. Un paquet introuvable ne permet pas de conclure pour une installation de Kirby par archive. La documentation de Composer distingue aussi les paquets installés de ceux enregistrés dans composer.lock : un fichier de verrouillage corrigé ne garantit pas que le déploiement a suivi.

Déployez une version corrigée, puis vérifiez avec un compte contributeur que les informations réservées à l’administration sont bien inaccessibles.

Brotli : une corruption mémoire bien réelle
#

L’autre dossier est CVE-2026-111497. Il concerne le décodeur de la bibliothèque de compression Brotli. Un flux malformé déclenche une écriture hors limites, avec des conséquences possibles allant du plantage à la divulgation de mémoire ou à l’exécution de code.

Le bulletin Node.js du 21 octobre décrit une transition de bloc invalide traitée comme un besoin de données supplémentaires. Le décodeur continue alors à accumuler des octets au-delà d’un tampon interne de huit octets. Le correctif amont renvoie une erreur de format et la propage à l’appelant pour interrompre ce traitement.

L’exposition vient de la décompression de données non fiables. Un service peut recevoir un corps de requête compressé, mais aussi télécharger une réponse Brotli depuis un serveur malveillant. Un frontal qui filtre les requêtes entrantes ne couvre donc pas à lui seul ce second chemin. Servir des fichiers compressés ne démontre pas que l’application décode elle-même des flux contrôlés par un attaquant.

Le nom Node2Shell vient de l’analyse publiée par Imperva le 22 octobre. Son équipe rapporte une exécution de code avec l’image officielle Node.js 24.22.0 sous Linux arm64, via des réponses HTTP et des corps de requêtes décompressés par les configurations testées. Les mêmes entrées sont rejetées par 24.22.1. Cette démonstration ne documente pas, à elle seule, une exploitation observée sur des services en production.

Mettre à jour le bon composant
#

Voici les versions affectées et les premiers correctifs annoncés par les projets, à distinguer des révisions fournies par une distribution :

ComposantVersions affectées dans la branchePremière version corrigée
Node.js 22.xAvant 22.23.422.23.4
Node.js 24.xAvant 24.22.124.22.1
Node.js 26.xAvant 26.12.126.12.1
Bibliothèque Brotli 1.0.x1.0.3 à 1.0.91.0.10
Bibliothèque Brotli 1.1.x1.1.01.1.1
Bibliothèque Brotli 1.2.x1.2.01.2.1

Les versions Node.js figurent dans le bulletin du projet. Pour une branche en fin de vie, migrez vers une branche maintenue. Le registre CVE précise les plages Brotli affectées ; les correctifs sont publiés dans les versions 1.0.10, 1.1.1 et 1.2.1.

Pour Node.js, cette commande affiche la version du binaire disponible dans le shell, sans modifier l’installation :

node --version

Exécutez-la dans l’environnement de l’application, y compris dans son conteneur. Si le service utilise un chemin de binaire explicite, interrogez ce même binaire. Le Node.js de l’hôte peut être différent. Après remplacement du runtime, relancez le service pour qu’il utilise le nouveau binaire ; cette opération peut interrompre les requêtes en cours.

Avec des paquets de distribution, comparez la révision complète à l’avis de sécurité du fournisseur. Les rétroportages expliqués par Debian peuvent intégrer un correctif sans adopter le dernier numéro amont. Mettre à jour une bibliothèque système ne corrige pas automatiquement une copie embarquée dans une application.

Si le déploiement doit attendre, empêchez temporairement les données Brotli non fiables d’atteindre le décodeur vulnérable, sur les chemins entrants comme sortants. Cela peut casser les échanges qui utilisent cette compression. Imperva recommande de cartographier ces chemins et rappelle que la correction complète passe par la mise à jour du runtime.

Pour l’investigation, des arrêts inattendus pendant une décompression peuvent orienter les recherches, sans constituer une signature fiable d’exploitation. Leur absence n’établit pas l’absence de compromission. De même, une version vulnérable confirme un correctif manquant, pas une attaque réussie.

Le tri utile reste concret : Kirby si vous utilisez ce CMS, le runtime ou la bibliothèque concernés si votre application décompresse du Brotli. Une alerte « HTML2Shell » sans ce contexte ne suffit pas à choisir un correctif.

Sources
#

Visuel : capture de l’avis officiel de Kirby sur GitHub, réalisée le 25 octobre 2026.

Articles connexes

Dirty Frag sous Linux : vérifier l'exposition et installer les correctifs

··1359 mots·7 mins
Dirty Frag désigne deux vulnérabilités du noyau Linux publiées le 7 mai 2026 par Hyunwoo Kim. Elles sont suivies sous CVE-2026-43284 pour le chemin XFRM/ESP et CVE-2026-43500 pour RxRPC. Dans les deux cas, un attaquant qui peut déjà exécuter du code localement peut modifier une page du cache mémoire associée à un fichier normalement accessible en lecture seule. Le démonstrateur public utilise cette primitive pour obtenir les privilèges root. Mise à jour du 28 août 2026 : les deux CVE disposent désormais de correctifs dans les noyaux fournis par les principales distributions. La désactivation des modules reste une solution temporaire lorsque la mise à jour est impossible. L’article initial, écrit pendant la divulgation, indiquait encore que le second correctif n’était pas publié.

PHP : correctifs disponibles pour deux failles critiques de RCE

··1745 mots·9 mins
PHP a publié les correctifs des deux failles critiques annoncées cette semaine. Les versions 8.2.35, 8.3.36, 8.4.27 et 8.5.12 sont disponibles, ainsi que les paquets Debian 12 et 13. L’exécution de code sans authentification est démontrée sur mod_php et, avec certaines applications, sur PHP-FPM : les serveurs web concernés ont une mise à jour à faire.

GitHub Actions : empêcher l'empoisonnement du cache avec cache-mode

Un cache CI est souvent considéré comme un simple réglage de performance. Pourtant, les fichiers restaurés peuvent finir dans un chemin exécuté par le build : dépendances, scripts, objets compilés, outils téléchargés ou couches intermédiaires. Un cache modifié par un job peu fiable peut donc devenir un canal d’exécution dans un workflow plus privilégié. Depuis le 10 septembre 2026, GitHub Actions permet de fixer explicitement les droits du cache avec cache-mode. La clé accepte quatre valeurs, read, write, write-only et none, au niveau du workflow ou d’un job. La fonction est disponible sur github.com pour tous les plans. Le réglage le plus utile en pratique consiste à séparer les rôles : les validations de pull requests restaurent un cache en lecture seule, tandis qu’un workflow déclenché depuis une branche de confiance produit les nouvelles entrées. Les jobs de publication qui n’ont pas besoin du cache le désactivent complètement. cache-mode impose une limite de droits appliquée par le service de cache. Il ne vérifie toutefois pas l’intégrité des fichiers déjà présents et ne corrige pas un workflow qui exécute du code non fiable avec des secrets.