L'IA perce un code vieux de 20 ans : l'urgence PHP2Shell
Les privilèges du serveur web peuvent être compromis avant même l’exécution du code applicatif, ce qui rend la mise à jour du moteur et l’ajustement de la configuration indispensables.
Le 21 octobre 2026, l’équipe de développement de PHP a publié en urgence des correctifs de sécurité pour combler de graves failles de gestion de la mémoire au sein de l’interpréteur principal. Regroupées sous le nom de « PHP2Shell » par les spécialistes de la sécurité, ces vulnérabilités (référencées CVE-2026-109618 et CVE-2026-109619) affichent un score CVSS v4.0 de 9,2 et permettent l’exécution de code à distance (RCE, Remote Code Execution), offrant à un assaillant la possibilité d’exécuter des commandes système arbitraires via le réseau.
Ce qui a rendu cette vague d’alertes, qualifiée de « Black October », particulièrement marquante, c’est l’implication directe de modèles d’IA frontière des deux côtés de la barrière. D’après les rapports de Cloudflare et d’équipes de veille sur les menaces, des scripts d’attaque automatisés générés par IA ont commencé à scanner et cibler massivement les serveurs web avant même la publication coordonnée des correctifs. L’agence américaine CISA a immédiatement inscrit ces failles à son catalogue d’exploits connus (KEV, Known Exploited Vulnerabilities). L’implication organisée d’un groupe APT étatique précis n’a pas été confirmée à ce stade.
Comment l’IA frontière a déterré des failles zero-day dans le cœur vieux de 20 ans de PHP
Le code vulnérable était présent dans le cœur C de l’interpréteur depuis l’époque de PHP 5.x, soit près de deux décennies. Malgré d’innombrables outils d’analyse statique et des audits manuels successifs, ces chemins d’exécution défaillants étaient enfouis au fond des mécanismes de reprise sur erreur, rarement déclenchés lors de charges de travail ordinaires.
L’avènement de modèles d’IA frontière capables de contextualiser des dépôts historiques volumineux a bouleversé la donne. Des agents d’analyse de code ont passé au crible le code source en C, explorant méthodiquement les cas limites des machines à états complexes et des branches de déroulement d’erreurs, jusqu’à isoler des failles zero-day (vulnérabilités encore non corrigées). L’incident prouve surtout que les assaillants disposent des mêmes capacités pour synthétiser des charges utiles fonctionnelles en quelques heures.
Fonctionnement et rayon d’impact de PHP2Shell (CVE-2026-109618 et 109619)
Les deux vulnérabilités sont liées à la façon dont l’interpréteur PHP gère la fonction longjmp() lors d’erreurs fatales.
La faille CVE-2026-109618 concerne la gestion du manque de mémoire (OOM, Out of Memory). Lorsqu’un OOM survient, longjmp() déroute brutalement l’exécution, laissant la mémoire liée à la requête dans un état non initialisé. En envoyant des requêtes forgées pour provoquer volontairement un épuisement de mémoire, un attaquant peut manipuler ces zones non initialisées et déclencher une exécution de code arbitraire.
La faille CVE-2026-109619 est une vulnérabilité de type Use-After-Free (UAF, réutilisation de mémoire libérée) liée au suivi de progression des téléversements de fichiers (session.upload_progress.enabled), souvent activé par défaut. Si une erreur fatale interrompt un téléversement et provoque un saut par longjmp(), des pointeurs globaux continuent de référencer la zone libérée sur le tas (heap). Une requête suivante peut réécrire dans cette zone et détourner le flux d’instructions.
Le point le plus critique réside dans le moment où l’attaque se produit : dans les architectures classiques comme Apache mod_php, PHP-FPM ou FrankenPHP, la vulnérabilité se déclenche dès l’analyse de la requête HTTP et l’initialisation du moteur, bien avant que les mécanismes de validation ou les pare-feu applicatifs de Laravel ou WordPress n’entrent en action.
Actions immédiates à vérifier et à appliquer en production
Comme PHP propulse encore près de 70 % des sites web dans le monde, un audit immédiat des environnements de production s’impose.
La mesure principale consiste à mettre à niveau le moteur vers les versions corrigées : PHP 8.5.12, 8.4.27, 8.3.36 ou 8.2.35.
Si un redéploiement instantané du moteur n’est pas possible, il convient d’appliquer une atténuation temporaire dans la configuration. Désactiver le suivi de progression des téléversements dans php.ini (session.upload_progress.enabled = 0) et redémarrer les processus neutralise le vecteur d’attaque de CVE-2026-109619. Ce réglage ne protège toutefois pas contre la corruption mémoire de CVE-2026-109618, d’où la nécessité d’une mise à jour complète à court terme.
Pour les serveurs exécutant encore des branches obsolètes de PHP 7.x ou 5.x, la situation est nettement plus grave. Aucun correctif officiel n’étant fourni pour ces versions en fin de vie, il est impératif d’isoler ces conteneurs derrière des règles de filtrage strictes ou de couper leur exposition directe à Internet en attendant leur migration.
Ce qu’il faut surveiller
L’IA frontière a drastiquement réduit le délai entre la découverte d’une faille et son exploitation opérationnelle.
Face à des nuées d’attaques automatisées, les cycles habituels d’audit humain et de déploiement manuel de correctifs ne suffisent plus. Les projets open source et les hébergeurs devront intégrer des audits de code automatisés par IA au cœur de leurs pipelines CI/CD, tout en déployant des couches de correctifs virtuels capables de neutraliser les failles zero-day en temps réel.
Sources
Source: unit42.paloaltonetworks.com