PHP2Shell: votre infrastructure PHP est-elle menacée?

Un guide SOC pratique pour vérifier la présence de vulnérabilités dans vos systèmes PHP, évaluer votre exposition et prendre les bonnes mesures pour sécuriser votre infrastructure.

PHP2Shell: votre infrastructure PHP est-elle menacée?
En bref: ce qui s’est passé et ce qu’il faut faire

Deux vulnérabilités critiques, CVE-2026-109618 et CVE-2026-109619 (CVSS v4.0: 9.2, score attribué par PHP), affectent l’environnement d’exécution PHP et peuvent permettre une exécution de code à distance sans authentification. PHP a publié des correctifs le 21 octobre 2026: 8.2.35, 8.3.36, 8.4.27 et 8.5.12. Une troisième vulnérabilité, CVE-2026-115560, divulguée le 23 octobre, n’est toujours pas corrigée dans ces versions et présente des conditions d’exploitation spécifiques.

La priorité est d’identifier la version de PHP qui sert réellement le trafic web, d’appliquer la version corrigée et de redémarrer ou recharger les processus PHP. Une vérification avec php -v seule ne suffit pas: le CLI, PHP-FPM et le module PHP d’Apache peuvent exécuter des versions différentes. Incluez dans votre inventaire les conteneurs, les environnements de test et les produits qui embarquent PHP.

En parallèle, surveillez les signes d’exploitation: processus web lançant des shells, requêtes multipart suspectes, plantages de workers et nouveaux fichiers PHP dans les répertoires de téléversement.

En bref: ce qui s’est passé et ce qu’il faut faire

Pourquoi c’est important

Selon W3Techs, au 21 octobre 2026, PHP était utilisé par 69,2 % des sites web dont le langage côté serveur est connu, une statistique que Hadrian a utilisée dans son analyse de PHP2Shell pour illustrer l’ampleur potentielle de l’exposition. Ce pourcentage ne signifie pas que 69,2 % des sites sont vulnérables; l’exposition réelle dépend de la version installée, des paquets du distributeur et de la configuration du système.

L’exposition n’est pas seulement théorique. Wiz Research a démontré une exécution de code sans authentification sur les images de conteneur officielles actuelles de WordPress, Drupal et Joomla. Les installations standard de CMS sont donc des cibles directes, sans qu’aucune configuration particulière soit nécessaire.

Ce que nous savons de l’exploitation au 27 octobre

Amazon Threat Intelligence a observé une tentative dans ses honeypots MadPot le 17 octobre, avant la publication des vulnérabilités et des correctifs. L’analyse rétroactive des journaux doit donc commencer au 17 octobre 2026. Des tentatives de scan et d’exploitation ont ensuite été signalées, et des PoC ont été rendus publics.

Le 24 octobre est apparue la première confirmation publique de haute qualité d’une exploitation réussie: Adel Karimi, responsable détection et réponse chez Perplexity, a enregistré dans ses honeypots 35 shells lancés depuis deux adresses IP, sur Apache mod_php avec PHP 8.4.26, via une chaîne HTTP en quatre étapes correspondant à un PoC public. Les preuves comprenaient un vidage mémoire de 800 KiB, qui a conduit Karimi à conclure à une “RCE confirmée avec divulgation de mémoire exploitable”. Le constat a été validé de manière indépendante par Marcus Hutchins (Expel), qui l’a qualifié de “confirmation d’exploitation en conditions réelles de loin la plus solide à ce jour”. Karimi a toutefois souligné que le test avait été réalisé sur un profil mod_php à worker unique, volontairement favorable, et qu’il ne mesure pas la fiabilité avec d’autres nombres de workers, d’autres builds ou d’autres applications.

Le 26 octobre, la CISA a ajouté les deux CVE à son catalogue Known Exploited Vulnerabilities (KEV), avec une date limite de remédiation fixée au 29 octobre pour les agences fédérales américaines. Par ailleurs, CYFIRMA a signalé, avec un niveau de confiance modéré, une campagne de scan et de sondage attribuée à l’écosystème Lazarus, ciblant 216 hôtes PHP non corrigés ou ne disposant que de mesures d’atténuation partielles, activité de sondage, et non exploitation confirmée.

La partie technique: identifier et corriger les systèmes vulnérables
1. Inventorier tous les emplacements où PHP s’exécute
  • Vérifiez la CMDB, les scanners de vulnérabilités, les configurations des serveurs, les dépôts et les images de conteneur.

  • Incluez les VM, App Service, Kubernetes, les conteneurs, les environnements de préproduction/test, les applications sur site et les produits/appliances tiers qui embarquent PHP.

  • Traitez en priorité les systèmes exposés sur Internet, en particulier ceux qui exécutent Apache mod_php, ainsi que les applications qui acceptent des téléversements.

  • Utilisez l’en-tête X-Powered-By ou la prise d’empreinte externe uniquement comme indices, ils ne confirment pas la version réelle de l’environnement d’exécution.

2. Vérifier la version qui sert le trafic web

Ne vous fiez pas uniquement à la version du CLI. La version affichée par php -v peut différer de celle de PHP-FPM ou du module Apache. Vérifiez-les séparément:

Pour les paquets fournis par les distributions Linux, vérifiez s’il existe un rétroportage du correctif. Un numéro de version apparemment plus ancien ne signifie pas automatiquement que le paquet est vulnérable; consultez le journal des modifications (changelog) de la distribution.

3. Déterminer le mode d’exécution (SAPI) - le risque diffère

Le risque n’est pas le même pour toutes les installations. Le tableau résume ce qui a été confirmé par les chercheurs et ce qui découle de l’analyse du code. Si mod_php est chargé et sert des applications publiques, le système relève de la catégorie de risque très élevé.

4. Appliquer le correctif et confirmer que le code mis à jour s’exécute

Mettez à jour vers la version corrigée de votre branche. Ensuite, redémarrez ou rechargez les services PHP-FPM/Apache et les workers concernés, conformément à vos procédures opérationnelles. Vérifiez à nouveau la version via le chemin utilisé par l’application web. Mettre à jour le paquet sans redémarrer les processus peut laisser les workers existants exécuter encore le code vulnérable.

Pour PHP 8.1 et les versions antérieures, vérifiez si votre distributeur fournit des correctifs rétroportés documentés. S’il n’existe aucun correctif pris en charge, planifiez une migration. Reconstruisez les images de conteneur à partir d’images de base mises à jour et redéployez-les; la mise à jour de l’hôte ne met pas à jour PHP à l’intérieur du conteneur.

5. Vérifier les surcharges INI par requête (consommateur pour CVE-2026-109619)

Les avertissements générés lors de l’application de paramètres INI par répertoire peuvent servir de “consommateur” dans la chaîne de CVE-2026-109619. Recherchez les directives php_value / php_flag / php_admin_* dans .htaccess et dans la configuration Apache, ainsi que PHP_VALUE / PHP_ADMIN_VALUE envoyés par nginx à FPM. Masquer les erreurs ne vous protège pas, car l’accès à l’état global a lieu avant que PHP ne décide d’afficher ou non le message. Déplacez la configuration dans php.ini ou dans le pool FPM.

6. Atténuer temporairement CVE-2026-115560

CVE-2026-115560 est un vecteur distinct, divulgué le 23 octobre et toujours non corrigé au 27 octobre — PHP devrait publier le bulletin de sécurité complet, avec les versions affectées et le score CVSS, avec la prochaine version, dont la date n’a pas été annoncée. Selon l’avis de PHP, le risque n’existe que lorsque trois conditions sont réunies simultanément:

1.  session.serialize_handler vaut php_binary ou php_serialize;

2.  l’application bascule le gestionnaire sur php via ini_set() avant session_start(); et

3.  session.upload_progress.enabled reste activé.

Les applications qui ne changent pas de gestionnaire de session à l’exécution ne sont pas exposées via ce vecteur spécifique. Mesure temporaire: définissez session.upload_progress.enabled=0 dans php.ini ou .user.ini, ou via la configuration du pool PHP-FPM. Testez l’effet sur les fonctionnalités de téléversement, puis rechargez les services et confirmez le paramètre effectif. Cette mesure ne remplace pas les correctifs pour CVE-2026-109618 et CVE-2026-109619.

7. Mesures compensatoires et leurs limites

Si vous ne pouvez pas appliquer le correctif immédiatement, envisagez d’isoler temporairement le système exposé et de mettre en place des mesures qui réduisent le trafic multipart. Toute modification doit être approuvée, testée et surveillée. Les règles WAF peuvent bloquer une partie des tentatives, mais elles ne corrigent pas l’environnement d’exécution et leur efficacité est limitée face à des requêtes formellement valides.

Ne considérez pas les éléments suivants comme un correctif:

  • le masquage des erreurs (display_errors=Off, error_reporting, log_errors=Off ou l’opérateur @)- l’attaque se produit avant l’exécution du code de l’application;

  • un mode maintenance du CMS;

  • les règles WAF fondées sur des signatures de payload (les requêtes malveillantes sont formellement valides).

L’absence d’erreurs dans les journaux ne prouve pas que le système n’a pas été ciblé. Ne testez pas les systèmes de production avec des PoC publics: beaucoup ne sont pas fiables, certains peuvent contenir du code dangereux, et un résultat négatif ne prouve pas que le serveur n’est pas vulnérable.

Détection et réponse

Parallèlement à l’application des correctifs, le SOC recommande une analyse rétroactive des systèmes exposés au moins à partir du 17 octobre 2026, lorsque la télémétrie existe. Corrélez les accès suspects avec l’exécution de processus, les modifications de fichiers, les connexions sortantes et les événements d’authentification. L’absence de télémétrie ou d’alertes ne prouve pas qu’aucune exploitation n’a eu lieu.

1. Télémétrie des processus / EDR

Déclenchez une alerte pour tout processus lancé par php-fpm, php-cgi, httpd ou apache2 qui démarre un shell ou des outils de téléchargement (sh, bash, dash, curl, wget, nc, python, perl). En fonctionnement normal, ce comportement est rare et doit être traité comme une compromission possible.

2. Journaux web et PHP

•   Rafales de requêtes POST multipart/form-data provenant de la même source, en particulier avec un nombre inhabituel de parties ou d’en-têtes.

•   Noms de champs profondément imbriqués ou requêtes contenant PHP_SESSION_UPLOAD_PROGRESS, y compris vers des points de terminaison qui ne devraient pas accepter de téléversements.

•   Réponses HTTP 500 répétées, plantages ou redémarrages inattendus des workers PHP.

•   Cookies PHPSESSID malformés ou anormalement longs et erreurs répétées (SIGSEGV, AH00052, zend_mm_heap corrupted, "Allowed memory size … in Unknown on line 0") dans les journaux PHP, Apache ou FPM.

3. Système de fichiers et persistance

•   Fichiers PHP nouveaux ou modifiés dans les répertoires de téléversement, de cache ou accessibles depuis le web; vérifiez l’horodatage, le propriétaire et le contenu.

•   Nouvelles tâches cron pour l’utilisateur du serveur web, clés SSH ou comptes ajoutés récemment; connexions sortantes inhabituelles initiées par les workers web.

4. Comment utiliser les indicateurs de compromission (IOC)

Considérez les IOC comme des points de départ pour la corrélation, et non comme des preuves à part entière: certaines adresses peuvent appartenir à une infrastructure d’anonymisation ou apparaître dans du trafic légitime. Une correspondance ne confirme pas une compromission et ne justifie pas un blocage automatique. Validez la source, la date et le contexte de chaque indicateur, en le confrontant à la télémétrie hôte/réseau.

Réponse à incident: en cas de signes crédibles de compromission

1.  Isolez le système affecté et limitez l’accès réseau sans détruire les preuves.

2.  Préservez les journaux et, si possible, une image disque ainsi que les artefacts mémoire/processus pertinents.

3.  Renouvelez tous les identifiants accessibles au processus web: mots de passe de bases de données, clés d’API, jetons et secrets .env.

4.  Poursuivez l’investigation à la recherche de persistance, d’exfiltration et de mouvements latéraux. La seule mise à jour de PHP ne supprime pas l’accès d’un attaquant si le système était déjà compromis.

5.  Faites remonter l’incident à l’équipe SOC/IR et évaluez les obligations de notification applicables (RGPD, NIS2).


Tableaux de référence

Versions affectées et corrigées

Comparaison des deux CVE corrigées
Plan d’action recommandé

Sources et références


[1]  PHP Security Advisory — GHSA-w8hw-w9fx-j79w (CVE-2026-109618) — https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w

[2]  PHP Security Advisory — GHSA-6wmf-4rv5-p3rp (CVE-2026-109619) — https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

[3]  PHP official notice — Session upload progress (CVE-2026-115560), 23 oct. — https://www.php.net/archive/2026.php#2026-10-23-1

[4]  Amazon Threat Intelligence — MadPot observations, 17–21 oct. 2026 — https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/

[5]  Cloudflare — PHP2Shell: WAF mitigations and their limits — https://blog.cloudflare.com/php-vulnerabilities-waf-protection/

[6]  CISA — Critical Vulnerabilities in PHP Require Immediate Patching — https://content.govdelivery.com/accounts/USDHSCISA/bulletins/42ff5ac

[7]  VulnCheck — exploit research update, 23 oct. 2026 — https://www.vulncheck.com/blog/php2shell-vulnerabilities

[8]  Wiz Research — PHP2Shell technical disclosure (RCE sur des conteneurs CMS) — https://www.wiz.io/blog/php2shell-php-rce

[9]  Censys — PHP2Shell services (données dynamiques, indicatives) — https://php2shell.censys.com/

[10]       Red Hat — RHSB-2026-013 (paquets/distributions) — https://access.redhat.com/security/vulnerabilities/RHSB-2026-013

[11]       AWS Security Blog — WAF mitigating controls, 21 oct. 2026 — https://aws.amazon.com/blogs/security/using-aws-waf-to-apply-mitigations-for-php2shell-rce-vulnerabilities-cve-2026-109618-and-cve-2026-109619/

[12]       Recorded Future News — exploitation attempts and corrections (y compris la révision de Sophos) — https://therecord.media/php-php2shell-exploitation-attempts-pocs

[13]       Unit 42 / Palo Alto Networks — PHP2Shell Threat Brief (mis à jour, retrait de l’association) — https://unit42.paloaltonetworks.com/cve-2026-109618-cve-2026-109619/

[14]       SecurityWeek — PHP2Shell Exploitation Moves From Probes to Working Shells (35 shells dans un honeypot) — https://www.securityweek.com/php2shell-exploitation-moves-from-probes-to-working-shells/

[15]       securityonline.info — PHP2Shell added to CISA KEV; probing campaign attributed to Lazarus (CYFIRMA) — https://securityonline.info/php2shell-cisa-kev-confirmed-rce-dprk/

[16]       The Hacker News — Wordfence IOC lists and the Potassium botnet (source secondaire) — https://thehackernews.com/2026/10/php2shell-exploit-attempts-hit-millions.html

[17]       SOCRadar — exploitation report / observed infrastructure — https://socradar.io/blog/php2shell-cve-2026-109618-cve-2026-109619/

[18]       W3Techs — Usage statistics and market share of PHP (statistique au 21 oct. 2026) — https://w3techs.com/technologies/details/pl-php

BleepingComputer — PHP2Shell security flaws now successfully exploited in the wild (RCE dans un honeypot, 26 oct.) — https://www.bleepingcomputer.com/news/security/php2shell-security-flaws-now-sucessfully-exploited-in-the-wild/

Cloud image

30 jours de cyberdéfense de niveau entreprise

Entrez dans le futur de la cybersécurité avec un accès complet à une plateforme unifiée et intelligente — gratuit pendant 30 jours. Donnez à votre équipe de sécurité les moyens de :

  • Un SIEM avancé pour une visibilité en temps réel, des alertes intelligentes et une analyse forensique approfondie dans les environnements cloud, sur site et hybrides

  • Une gestion continue des vulnérabilités pour identifier, prioriser et remédier aux risques sur l'ensemble des actifs

  • Un renseignement sur les cybermenaces en direct intégré à vos flux de travail, avec des analyses mondiales et des profils d'attaquants

  • Une détection des menaces pilotée par l'IA qui apprend de votre environnement, explique les alertes en langage clair et suggère les prochaines étapes

  • Une préparation intégrée à la conformité pour NIS2, le RGPD, ISO 27001 et plus encore, avec des rapports automatisés et des outils d'audit

Que vous gériez un SOC léger ou une équipe de sécurité d’entreprise à grande échelle, cette plateforme vous donne les outils pour détecter plus vite, réagir plus intelligemment et garder une longueur d’avance sur l’évolution des menaces, sans la complexité.

Profitez d'une protection de niveau entreprise, de flux de travail optimisés et d'un contrôle total.

Votre avance de 30 jours commence maintenant.

Débloquez votre essai gratuit de 30 jours