PHP2Shell : la faille PHP qui menace téléphones et réseaux d’hôtel
Deux failles du moteur PHP, exploitées activement, touchent appliances, téléphonie et sites d’hôtels. Statut par fournisseur, plan de remédiation.
CVE-2026-111497 frappe le décodeur Brotli de Google, que Node.js, .NET, Python, PHP et des appliances embarquent chacun. Le mode d’emploi pour un hôtel.
Une faille, quatre surnoms et un correctif à appliquer des dizaines de fois. CVE-2026-111497 est une écriture hors limites dans le décodeur C de Brotli, la bibliothèque de compression de Google, révélée le 21 octobre 2026 par Node.js. Elle touche l’hôtellerie par un mécanisme sans éclat: chaque éditeur embarque sa propre copie de Brotli, donc chaque copie attend son propre correctif. Node.js, .NET, deux paquets Python, Bun, Envoy et Istio ont publié des correctifs; les éditeurs de téléphonie et de gestion technique du bâtiment cartographient encore leurs produits. La bonne question n’est plus quel logiciel est vulnérable, mais où tourne un décodeur Brotli, et dans quelle version.
Quatre noms circulent pour la même faille. Imperva Red Team a publié son analyse sous le nom Node2Shell; Mitel reprend node2shell jusque dans le titre de son avis MISA-2026-0010. HTTP2Shell dit que le bug déborde largement Node.js côté HTTP: Johnson Controls a intitulé « HTTP2Shell » son avis JCI-PSA-2026-31, alors que BleepingComputer rappelle que le défaut n’a rien de spécifique à HTTP/2. Tenable a retenu Brotli2Shell parce que le bug siège dans le décodeur lui-même. Broccoli2Shell vient du site de suivi broccoli2shell.com, et le Centre pour la cybersécurité du Canada l’emploie dans son alerte AL26-027.
Pour la conformité, seule la constante compte: cherchez CVE-2026-111497 dans les avis, les contrats et les attestations, sous son nom officiel « Google Brotli Unchecked Return Value Vulnerability ». Google, autorité de numérotation, note la faille 9,2 (critique) en CVSS v4.0. La CISA l’a inscrite à son catalogue des vulnérabilités exploitées connues (KEV) le 27 octobre 2026, avec une échéance fédérale au 10 novembre 2026 fixée par la directive BOD 26-04. Celle-ci ne lie que les agences civiles fédérales américaines; pour un exploitant privé, elle reste une barre de référence défendable.
Le mécanisme est bref: un flux Brotli préparé signale un changement de bloc invalide comme un besoin temporaire d’entrée au lieu d’une erreur de format définitive, et le décodeur continue d’écrire au-delà d’un tampon interne de huit octets, explique Node.js. Deux routes amènent des données hostiles: une réponse HTTP compressée que l’application récupère, et un corps de requête compressé qu’elle décompresse à l’entrée.
Le calendrier est inhabituel: Google a commité le patch le 27 février 2026, sans avis ni version publiée, et il est resté consultable publiquement huit mois avant la vague coordonnée du 21 octobre, qui a livré Brotli 1.0.10, 1.1.1 et 1.2.1 avec Node.js 22.23.4, 24.22.1 et 26.12.1. Les paquets Python Brotli 1.2.1 et brotlicffi 1.2.1.0 sont arrivés sur PyPI le 22 octobre; Microsoft a poussé le 25 octobre une mise à jour d’urgence pour .NET, Visual Studio et PowerShell; Envoy et Istio avaient corrigé plus tôt dans le mois sans nommer la faille; les versions officielles Windows de PHP ont été reconstruites le 26 octobre.
Le piège, documenté par Tenable: mettre à jour la Brotli du système ne change rien pour les logiciels qui embarquent leur copie, comme Node.js et Bun. L’exposition reste conditionnelle: une application .NET n’est pas exposée du seul fait du paquet installé, précise Microsoft, la décompression étant désactivée par défaut; Envoy n’est à risque que si son filtre de décompression Brotli est configuré. Les services web Node.js sont le cas bruyant: Imperva a travaillé sur Express 5.0.0 à 5.3.0 et body-parser 2.0.0 à 2.3.0, qui décompressent les corps de requête Brotli, et node:zlib décode nativement. Les lignes 20.x, 23.x et 25.x, en fin de support, n’auront aucun correctif: les exploiter impose de migrer, pas de patcher.
Moteurs de réservation, frontaux web des PMS (logiciel de gestion hôtelière) et portails clients forment le premier estate, un monde massivement Node.js, couche SaaS des chatbots et channel managers comprise. Le runtime appartient à l’éditeur. Question écrite: quelle version corrigée tourne en production, et les images de conteneurs ont-elles été reconstruites, car rien ne change sans redémarrage des processus ni redéploiement.
La téléphonie forme le deuxième. L’avis Mitel sur ce défaut est MISA-2026-0010; sa révision 3.0 (30 octobre) ne laisse qu’un produit affecté, OpenScape Endpoint Management jusqu’à V1 R2.5.1, correctif annoncé et risque jugé faible si le déploiement suit les consignes Mitel; plusieurs lignes restent à l’étude. Deux précautions: MISA-2026-0010 couvre une famille distincte de MISA-2026-0008, l’avis php2shell, et les matrices ne doivent pas être fusionnées; exigez le numéro de révision avant de relayer un statut, les pages éditeur peuvent servir des copies périmées. Le présent article a lu la révision 3.0.
La gestion technique du bâtiment et le contrôle d’accès forment le troisième. Johnson Controls a publié le 30 octobre JCI-PSA-2026-31 v2, titré « HTTP2Shell » dans son index comme guidance générale sur CVE-2026-111497. Le détail produit n’est pas librement lisible: la matrice se télécharge derrière un mur de consentement. Un hôtel qui exploite Metasys, Kantech ou American Dynamics ne doit pas attendre: demandez par écrit à l’intégrateur l’évaluation produit par produit et classez-la avec les dossiers de changement.
Des preuves de concept publiques circulent sur GitHub. Imperva a démontré l’exécution de code sur l’image officielle Node.js 24.22.0 après plusieurs tentatives, et la version 24.22.1 rejette les mêmes entrées. ELLIO a enregistré des tentatives d’exploitation dans la nature, que Tenable n’a pas confirmées. Les mesures provisoires réduisent la fenêtre sans la fermer: bloquer Content-Encoding: br entrant au proxy ne protège pas la route des réponses récupérées chez un serveur hostile; retirer br de l’Accept-Encoding ne suffit pas, un serveur hostile pouvant répondre en Brotli de toute façon; désactiver le filtre dans Envoy renvoie les octets compressés au premier service aval qui les décode.
Les surnoms s’effaceront; le CVE et les dates restent. La question qui tranche, propriété par propriété: quel build du décodeur Brotli tourne dans ce processus, et a-t-il redémarré depuis le correctif.
Deux failles du moteur PHP, exploitées activement, touchent appliances, téléphonie et sites d’hôtels. Statut par fournisseur, plan de remédiation.
CVE-2018-2957 et CVE-2023-22087 touchent Oracle OPERA, un PMS très déployé. Données exposées, prise de contrôle: ce que la cadence des correctifs impose.
Depuis le 1er novembre 2026, l'Alberta reste à UTC-6 à l'année. Cartes d'accès, PMS, vidéosurveillance, audits nocturnes : les vérifications à mener maintenant.