Le 21 octobre, Météo France a annoncé la mise hors ligne de ses services de prévision et de vigilance. La raison : deux failles critiques dans le moteur PHP, au cœur de la majorité des sites web. La même décision a concerné les préfectures, la Ville de Paris, la CNIL et même des entités privées comme Orange, qui a temporairement déconnecté plusieurs sites et applications. Le problème s’est rapidement propagé à d’autres pays : aux Pays‑Bas, la chambre basse du Parlement a dû couper son site, et le CERT national y a mené une enquête.
Les failles et leur portée technique
Les deux vulnérabilités touchent le moteur Zend de PHP, responsable de la compilation du code source en bytecode. Elles permettent d’exécuter du code arbitraire avant même que les extensions ou le code applicatif ne soient initialisés. La première, introduite avec PHP 7.3 en 2018, exploite une surcharge de la table de hachage via une requête POST surdimensionnée, déclenchant un dépassement de mémoire (OOM) et laissant des octets résiduels que le nettoyage de la requête traite comme valides. La seconde, moins autonome, nécessite une étape d’empoisonnement suivie d’un déclenchement ciblé du même worker, mais elle touche un plus grand nombre d’états internes du moteur.
Un troisième problème, identifié sous le numéro CVE‑2026‑115560, pourrait encore permettre une exécution de code à distance (RCE) si une configuration inhabituelle de session est combinée à un code applicatif spécifique. Aucun correctif hors du cycle de release n’est prévu pour ce cas.
Réaction des acteurs du secteur
Le projet PHP a publié un avis anticipé dès le 20 octobre, après la fuite d’un proof‑of‑concept (PoC). AWS a détecté des tentatives d’attaque dès le 17 octobre, provenant d’une adresse IP liée à un réseau d’anonymisation commercial. Ellio a observé des attaques avant la diffusion des correctifs, avec des user‑agents contenant les chaînes « php2shell » et les identifiants des deux premières CVE.
Après la publication des correctifs, les attaques se sont multipliées, ciblant notamment l’épuisement de mémoire et des charges utiles variées : RAT en Go, webshell IIS, et même une version du botnet IoT Mirai compilée pour les serveurs 64 bits, capable d’ouvrir un shell interactif.
Patchs et mise à jour des distributions Linux
Les correctifs couvrent les versions PHP 8.2, 8.3, 8.4 et 8.5, avec un rétroportage minimal pour PHP 7.4, 8.0 et 8.1. Canonical a mis à jour Ubuntu 26.10 (PHP 8.5) ainsi que les trois dernières LTS – 26.04, 24.04, 22.04 – et, pour les abonnés Ubuntu Pro, a remonté les correctifs jusqu’à PHP 5.0. Debian a intégré les correctifs dans les dépôts Bookworm (PHP 8.2) et Trixie (PHP 8.4). Red Hat a corrigé RHEL 8 (PHP 8.2 & 7.4), RHEL 9 (8.3 & 8.2) et RHEL 10 (8.4). SUSE a étendu le correctif jusqu’à PHP 7.4 pour openSUSE 15.6/15.7 et SLES 12/15.
Statistiques de la surface d’attaque
Selon les données de W3Techs, près de 70 % des sites connus utilisent PHP, ce qui représente environ 69,2 % de tous les serveurs web. La répartition par version montre une domination croissante des séries 8.x, avec PHP 8.3 à 15,8 % et PHP 8.2 à 12,5 %. Les versions 7.x restent présentes (18,6 % au total), tandis que PHP 5 représente 5,3 %.
Mesures d’atténuation en l’absence de correctif
Lorsque la mise à jour immédiate n’est pas possible, la première vulnérabilité peut être limitée en définissant memory_limit = -1 et en bloquant, au niveau du WAF ou de la périphérie, les requêtes dépassant un certain seuil de taille. La seconde vulnérabilité, qui utilise des requêtes de quelques centaines d’octets, ne peut pas être atténuée de la même façon ; la désactivation du suivi des sessions d’upload est la mesure recommandée, confirmée par plusieurs CERT européens, notamment en Estonie.
Ces mêmes stratégies d’atténuation s’appliquent à la vulnérabilité CVE‑2026‑115560.
Défenses opérées par les fournisseurs de sécurité
Cloudflare a déployé des règles WAF avant même la sortie officielle des correctifs, détectant des milliers d’attaques en quelques heures et des dizaines de milliers dans les dernières minutes avant l’annonce. OpenAI a publié un vérificateur de version PHP sous forme de skill Codex, tandis que Corelight a fourni des packs de détection pour Zeek et Suricata. Le pack Suricata comporte trois règles : une recherche d’un marqueur rare dans les corps HTTP POST, et deux autres qui identifient la version de PHP via les en‑têtes de réponse ou le contenu de phpinfo().
Le pack Zeek génère neuf alertes, dont des champs de formulaire anormalement longs, des répétitions excessives de patterns MIME et des TokenUnité de contenu traitée par un modèle de langage, pouvant représenter un mot, une partie de mot ou un caractère. d’entier sérialisés volumineux, ainsi que des transactions HTTP suspectes corrélées à une même session.
Impact sur les utilisateurs et les opérateurs
Pour les sites publics, la mise hors ligne temporaire a eu pour effet de protéger les visiteurs contre d’éventuelles exfiltrations de données ou l’installation de logiciels malveillants. Les organisations privées, comme Orange, ont choisi de couper les services affectés afin d’éviter la propagation du code malveillant. La situation montre que la dépendance massive à PHP rend le web sensible aux vulnérabilités au niveau du moteur d’exécution, même si les correctifs sont rapidement déployés.
Perspectives
À moyen terme, la communauté PHP semble consciente du besoin de renforcer la robustesse du moteur Zend, notamment en revoyant les mécanismes de gestion de la mémoire et de désérialisation. Les opérateurs sont encouragés à automatiser les mises à jour, à surveiller les indicateurs d’attaque via les règles Zeek ou Suricata, et à appliquer les mesures d’atténuation dès que possible. La vigilance restera de mise tant que les PoC restent publics et que des acteurs malveillants continuent de développer des variantes ciblées.
Ainsi, même si les correctifs actuels couvrent la majorité des versions en production, la complexité du code PHP et sa large adoption imposent une surveillance permanente et une réactivité accrue pour garantir la sécurité du web français et mondial.
