Vulnérabilités critiques d'exécution de code à distance dans le cœur de PHP (« PHP2Shell » - CVE-2026-109618 et CVE-2026-109619)
Deux vulnérabilités critiques d'exécution de code à distance (RCE), regroupées sous le nom de PHP2Shell, ont été identifiées dans le moteur central de PHP (CVE-2026-109618 et CVE-2026-109619). Elles permettent à des attaquants distants non authentifiés d'exécuter du code arbitraire sur les serveurs web vulnérables hébergeant des applications PHP (notamment WordPress, Drupal, Magento, Laravel et les développements spécifiques). Elles proviennent d'une mauvaise gestion de la mé...
Description
Contexte technique et détails de la vulnérabilité
PHP est le langage de programmation web côté serveur dominant, utilisé par une grande majorité des applications web et des systèmes de gestion de contenu dans le monde. L'équipe de sécurité de PHP a publié des mises à jour urgentes corrigeant deux failles critiques situées dans les routines centrales de traitement des requêtes et de nettoyage de la mémoire : CVE-2026-109618 (critique - score de sévérité de 9.2 selon le CVSS v4.0) : corruption du tas lors d'un manque de mémoire (Out-of-Memory), conduisant à une exécution de code à distance. Cette faille survient lors d'une interruption anormale d'une requête, par exemple lorsqu'une exécution dépasse la limite memory_limit configurée. PHP recourant historiquement à longjmp() pour interrompre brutalement l'exécution au lieu de dérouler proprement la pile d'appels, les fonctions C internes interrompues en pleine construction de structures de données complexes n'invoquent pas leurs destructeurs et n'annulent pas leurs opérations de suivi. La routine de nettoyage suppose alors que toutes les structures sont cohérentes, ce qui provoque le déréférencement d'un pointeur non initialisé (CWE-824) et une corruption du tas exploitable pour exécuter du code à distance. CVE-2026-109619 (critique - score de sévérité de 9.2 selon le CVSS v4.0) : utilisation après libération (Use-After-Free) via la gestion des erreurs fatales. Cette faille est déclenchée lors d'erreurs fatales ou de l'analyse de formulaires multipart (notamment via la fonction de suivi de la progression des téléversements php_session_rfc1867_callback lorsque session.upload_progress.enabled est actif). L'état mémoire résiduel d'une requête interrompue brutalement pointe vers des zones de mémoire libérées, qui peuvent ensuite être atteintes et exploitées par les requêtes suivantes traitées par le même processus ou thread. Ces vulnérabilités sont activement ciblées depuis la fuite publique de preuves de concept. Comme elles résident dans le moteur central de PHP, corriger le code applicatif ou les extensions ne suffit pas : il faut mettre à jour le binaire de PHP et redémarrer l'ensemble des pools de processus.
Impact & Risques potentiels
Conséquences potentielles en cas d'exploitation
- Exécution de code arbitraire à distance (RCE) sans authentification préalable ;
- Compromission totale du serveur sous-jacent et du système d'exploitation hôte ;
- Exfiltration, modification ou suppression non autorisées de bases de données et de fichiers ;
- Déploiement de webshells persistants, de portes dérobées et de rançongiciels ;
- Perte totale de confidentialité, d'intégrité et de disponibilité.
Systèmes affectés
Produits, composants et versions concernés
- PHP 8.5.x versions antérieures à 8.5.12 ;
- PHP 8.4.x versions antérieures à 8.4.27 ;
- PHP 8.3.x versions antérieures à 8.3.36 ;
- PHP 8.2.x versions antérieures à 8.2.35 ;
- Toutes les anciennes versions en fin de vie (notamment PHP 8.1, 8.0, 7.4, 7.x et 5.x), qui ne reçoivent plus de correctifs officiels.
Mesures & Remédiations recommandées
Actions immédiates et correctifs recommandés
- Mettre à jour immédiatement PHP sur tous les environnements (production, préproduction et développement) vers les dernières versions corrigées : PHP 8.5.12, 8.4.27, 8.3.36 ou 8.2.35 ou supérieures selon la branche ;
- Redémarrer obligatoirement les processus : la mise à jour des binaires ne suffit pas, il faut redémarrer immédiatement tous les services PHP (systemctl restart php-fpm, systemctl restart apache2, systemctl restart nginx, ou redémarrage des conteneurs applicatifs) afin de purger l'état vulnérable en mémoire ;
- En atténuation temporaire, si la mise à jour ne peut pas être appliquée immédiatement : désactiver le suivi de la progression des téléversements dans php.ini, .user.ini ou la configuration du pool (session.upload_progress.enabled = Off), et configurer les pare-feux applicatifs (WAF) et proxys inverses pour inspecter et limiter les requêtes POST multipart/form-data anormales vers les points d'accès qui n'acceptent pas de téléversement ;
- Migrer sans délai les installations PHP en fin de vie (7.x, 8.0, 8.1) vers une version activement prise en charge, ou appliquer les correctifs de support étendu (ELS) fournis par les éditeurs ;
- Analyser les journaux d'accès et d'erreurs des serveurs web à la recherche de pics anormaux de mémoire, d'erreurs OOM répétées et de création non autorisée de webshells.
Sources & Liens externes
Avis constructeurs et bulletins de référence
- https://www.php.net/archive/2026.php#2026-10-21-1
- https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w
- https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp
- https://nvd.nist.gov/vuln/detail/CVE-2026-109618
- https://nvd.nist.gov/vuln/detail/CVE-2026-109619
- https://php2shell.com
Fiche Technique
Cellule d'Urgence CSIRT
Votre infrastructure est-elle affectée ou suspectez-vous un incident ? Nos experts sont mobilisables pour intervenir.
Signaler un incidentRecevez nos alertes par email
Abonnez-vous pour recevoir nos bulletins d'alerte de sécurité et les actualités d'Iservices directement dans votre boîte mail.