PHP2Shell est une RCE pré-authentification dans PHP lui-même. Mettez PHP à jour, puis redémarrez-le.
Deux bugs de sécurité mémoire dans le moteur PHP (CVE-2026-109618, CVE-2026-109619) permettent à un attaquant non authentifié d’exécuter du code ou de lire la mémoire du serveur — mots de passe, clés d’API, jetons de session — sur presque toutes les versions de PHP depuis la 5.4, quelle que soit l’application au-dessus.
Pas technicien ? Lisez PHP2Shell expliqué simplement — ce que cela signifie pour votre site ou les outils SaaS que vous utilisez.
Dernière vérification 2026-10-22 · indépendant, neutre
Collez une version, la sortie de php -v, ou une version par ligne pour tout un parc. Tout s’exécute dans votre navigateur.
La CLI et le serveur web peuvent utiliser des builds PHP différents. Vérifiez la version réellement utilisée par votre serveur web : php-fpm -v (ou php-fpm8.3 -v), ou phpinfo() servi par ce site.
| Branche | Vulnérable | Corrigé dans |
|---|---|---|
| 8.5 | < 8.5.12 | 8.5.12 |
| 8.4 | < 8.4.27 | 8.4.27 |
| 8.3 | < 8.3.36 | 8.3.36 |
| 8.2 | < 8.2.35 | 8.2.35 |
| 8.1 · 8.0 · 7.4 | toutes | Rétroportage source seulement |
| 5.4 – 7.3 | toutes | Aucun correctif |
PHP 8.2 perd son support de sécurité le 2026-12-31
Passer à 8.2.35 corrige PHP2Shell, mais il faudra migrer à nouveau avant fin 2026. Si vous migrez de toute façon, visez 8.4 ou 8.5.
À faire maintenant
Dans cet ordre. Rien d’autre ne constitue une correction complète.
- 01
Recenser chaque environnement PHP
Serveurs web, conteneurs, images de base, hébergement mutualisé, préproduction. La version CLI peut différer de celle de PHP-FPM ou d’Apache.
Comment - 02
Installer une version corrigée
8.5.12 · 8.4.27 · 8.3.36 · 8.2.35, ou le paquet corrigé de votre distribution. Mettre à jour WordPress/Drupal/Laravel ne met pas PHP à jour.
Comment - 03
Redémarrer tout ce qui exécute PHP
Pools PHP-FPM, Apache (mod_php), FrankenPHP, workers de file, Octane/RoadRunner/Swoole. Les anciens processus gardent l’ancien code en mémoire.
Comment - 04
Vérifier, puis regarder en arrière
Confirmez la version annoncée par le serveur web. Examinez les journaux depuis début octobre 2026 et renouvelez les secrets si quelque chose semble anormal.
Comment
Impossible de mettre à jour aujourd’hui ? Les atténuations temporaires réduisent l’exposition aux chemins d’attaque connus. En hébergement mutualisé ? Voir hébergement.
Guides selon votre configuration
- WordPressPHP2Shell affecte-t-il votre site WordPress ? Vérifiez PHP dans Santé du site et découvrez les limites des mises à jour et quoi demander à l’hébergeur.
- DrupalPHP2Shell affecte-t-il votre site Drupal ? Vérifiez PHP dans le rapport d’état ou avec Drush et découvrez quoi demander à votre hébergeur.
- JoomlaPHP2Shell affecte-t-il votre site Joomla ? Vérifiez PHP dans Informations système et découvrez quoi demander à votre hébergeur sur le correctif.
- HébergeursPHP2Shell en hébergement mutualisé ou infogéré : vérifier et changer PHP dans cPanel ou Plesk, annonces des hébergeurs et questions à leur poser.
- WAF CloudflareCloudflare WAF et PHP2Shell : règles des offres Free et payantes, vérification des blocages et pourquoi PHP doit tout de même être mis à jour.
- session.upload_progressDésactiver session.upload_progress bloque-t-il PHP2Shell ? Portée, limites, emplacement du réglage, vérification et services à redémarrer.
Est-ce exploité ?
Situation au 2026-10-22. Les rapports divergent ; partez du principe que des attaquants compétents disposent d’exploits fonctionnels.
- Cloudflare (CTO Dane Knecht) : « We are seeing early attacks emerging and are updating mitigations as new vectors show up. »
- watchTowr indique une exploitation observée en conditions réelles via son réseau de honeypots au 21 octobre.
- Le NCSC néerlandais n’avait alors constaté aucun abus et considère tout système PHP exposé à Internet comme vulnérable tant qu’il n’est pas corrigé.
- Aucune compromission réussie n’avait été confirmée publiquement, et aucune des deux CVE ne figurait au catalogue KEV de la CISA.
- Plusieurs dépôts « PoC » circulent sur GitHub. Tenable n’a pu confirmer le fonctionnement d’aucun d’entre eux — traitez-les comme du code non fiable, potentiellement malveillant.
Organisations qui ont coupé leurs services (BambooHR, DigiD…) →
Quelles configurations serveur sont exposées
mod_php est le plus clairement exploitable, mais chaque SAPI qui sert des requêtes web a besoin du correctif.
| Configuration | …109618 | …109619 | Remarques |
|---|---|---|---|
| Apache + mod_php | RCE confirmée | RCE confirmée | Les deux CVE ont été confirmées jusqu’à la RCE avec les limites par défaut. Configuration la plus à risque. |
| PHP-FPM (nginx, Apache, Caddy…) | Exposé | RCE confirmée | RCE via le cycle de vie des sessions confirmée sur FPM. Chemin OOM confirmé via des chemins de code applicatifs ; aucun exploit FPM générique publié. |
| FrankenPHP / LiteSpeed LSAPI | Probable | Probable | L’avis les considère comme probablement exposés. Les workers de longue durée rendent l’état résiduel entre requêtes plus pertinent, pas moins. |
| CLI (cron, workers de file, artisan) | Non traité | Non traité | Non traité par les avis et non joignable par des requêtes HTTP en usage normal. Mettez à jour quand même — c’est le même paquet. |
À quelle heure le correctif est-il sorti dans mon fuseau ?
PHP a publié les versions corrigées le mardi 21 octobre 2026 à 14:00 UTC — 16:00 en France, en Belgique, au Luxembourg et en Suisse. Ce jour-là, les États-Unis et l’Europe étaient encore à l’heure d’été : « EST » désignait en réalité EDT (UTC−4).
| Fuseau horaire | Correctif publié | Date |
|---|---|---|
| UTC | 14:00 | mar. 21 oct. 2026 |
| États-Unis Pacifique (PDT, UTC−7) | 07:00 | 21 oct. |
| États-Unis Centre (CDT, UTC−5) | 09:00 | 21 oct. |
| États-Unis Est (EDT, UTC−4) | 10:00 | 21 oct. — c’est ce que désignent les recherches « EST » |
| Royaume-Uni (BST, UTC+1) | 15:00 | 21 oct. |
| Europe centrale (CEST, UTC+2) | 16:00 | 21 oct. — FR, BE, LU, CH, NL, DE… |
| Inde (IST, UTC+5:30) | 19:30 | 21 oct. |
| Chine / HK / SG (UTC+8) | 22:00 | 21 oct. |
| Japon (JST, UTC+9) | 23:00 | 21 oct. |
| Sydney (AEDT, UTC+11) | 01:00 | 22 oct. |
Ce qu’un attaquant peut faire
Exécuter du code sans se connecter
Exécution de code sous l’utilisateur du worker PHP (p. ex. www-data) : webshells, vol de données, défiguration, déplacement latéral.
Lire la mémoire d’autres requêtes
La mémoire du worker peut contenir des mots de passe de base de données, des clés d’API, des cookies de session, du matériel TLS et les données de formulaire d’autres utilisateurs.
Exfiltrer des données en silence
Le chemin de divulgation mémoire ne nécessite aucune exécution de code : les outils qui surveillent les processus malveillants peuvent ne jamais se déclencher.
Erreurs fréquentes
Les façons les plus rapides de se croire protégé alors qu’on ne l’est pas.
| Si vous pensez… | En réalité |
|---|---|
| « J’ai mis à jour WordPress / mes extensions. » | Le bug se trouve dans l’interpréteur PHP. Les mises à jour applicatives n’y touchent pas. Même un simple script « Hello World » sur un PHP vulnérable est exposé. |
| « J’ai mis session.upload_progress.enabled = 0. » | Cela bloque certains chemins confirmés d’une CVE. Cela ne fait rien contre CVE-2026-109618. Les développeurs de PHP eux-mêmes disent que la seule atténuation est la mise à jour. |
| « J’ai lancé apt upgrade, c’est réglé. » | Les processus PHP-FPM / Apache en cours gardent l’ancien binaire en mémoire jusqu’à leur redémarrage. |
| « php -v dit que je suis à jour. » | C’est la CLI. Le serveur web peut utiliser un autre paquet, conteneur ou version. Vérifiez php-fpm -v ou phpinfo(). |
| « Je suis derrière Cloudflare / un WAF. » | Les règles WAF réduisent le risque sur les charges connues ; les attaquants les modifient déjà, et les serveurs d’origine sont souvent joignables directement. Cela fait gagner du temps, ce n’est pas la correction. |
| « Ma version paraît ancienne, donc je suis vulnérable. » | Pas forcément. Debian, Ubuntu et RHEL rétroportent les correctifs sans changer le numéro amont. Vérifiez le changelog du paquet. |
Les deux CVE en un coup d’œil
RCE par corruption en cas de mémoire épuisée (OOM)
Exécution de code sans authentification sous l’utilisateur du worker web PHP.
Démontré : RCE pré-authentification sur WordPress, Drupal et Joomla (mod_php, limites par défaut).
RCE par état global résiduel entre requêtes
Use-after-free menant à la divulgation de la mémoire du worker ou à l’exécution de code.
Démontré : RCE pré-authentification sur WordPress et Drupal ; divulgation de mémoire à distance indépendante de l’application.
Pourquoi certains sites annoncent 10.0 : CVSS 9.2 ou 10.0 →
Le déroulé
- 2026-10-20 15:00 UTCLes identifiants CVE circulent sur des forums et réseaux sociaux, avec un CVSS erroné de 10.0.
- 2026-10-20 19:30 UTCPHP publie sa pré-annonce plus tôt que prévu.
- 2026-10-20 ~20:00 UTCCalif publie par erreur une vidéo de sa preuve de concept.
- 2026-10-20 23:00 UTCDes conseils d’atténuation sont envoyés à certains opérateurs d’infrastructures critiques et ont peut-être fuité.
- 2026-10-21 03:02 UTCLes règles WAF de Cloudflare sont activées pour toutes les offres, y compris Free.
- 2026-10-21 07:41 UTCChainguard publie des images corrigées et rompt l’embargo avec plus de six heures d’avance.
- 2026-10-21 11:51 UTCBambooHR coupe son service par précaution (États-Unis, Canada, Irlande).
- 2026-10-21 (CEST)Des sites publics et éducatifs néerlandais, dont DigiD et MijnOverheid, sont coupés par précaution.
- 2026-10-21 14:00 UTCPublication coordonnée : PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35, plus des rétroportages source pour 7.4, 8.0, 8.1. Initialement prévue le 22 oct.
- 2026-10-21 15:03 UTCBambooHR indique que le correctif est appliqué et en cours de test.
Chronologie complète depuis l’audit de 2024 → · Par rapport au bug Java de 2021 : PHP2Shell vs Log4Shell →