PHP2Shell : comprendre et corriger
PHP2Shell désigne deux failles graves dans PHP lui-même, le langage de nombreux sites web. Un attaquant sans compte peut les utiliser pour exécuter du code sur votre serveur web ou lire des données dans sa mémoire. Une mise à jour de PHP corrige les deux.
Revu le . Règles du . Résumé en français des guides en anglais.
Qu’est-ce que PHP2Shell ?
Le projet PHP a publié le 21 octobre 2026 un avis de sécurité sur deux failles critiques. Les failles sont dans PHP, pas dans le code de votre site. Chacune a son numéro CVE :
- CVE-2026-109618 : exécution de code via un état que PHP laisse corrompu quand il manque de mémoire.
- CVE-2026-109619 : exécution de code via un état périmé qu’une requête laisse à la suivante (use-after-free).
Selon php.net, toute installation de PHP qui traite des requêtes web est à risque, notamment PHP-FPM, Apache avec mod_php, php-cgi, FrankenPHP et LiteSpeed.
Mettre à jour WordPress, une extension, un thème ou une autre application ne change pas PHP. Votre hébergeur ou l’administrateur du serveur doit installer la mise à jour de PHP.
Versions corrigées
Votre branche correspond aux deux premiers nombres de votre version de PHP. Il vous faut la version corrigée de votre branche ou une version plus récente. Les quatre versions sont sorties le 21 octobre 2026 et corrigent les deux failles.
| Branche | Version corrigée | État |
|---|---|---|
| 8.5 | 8.5.12 | Prise en charge. |
| 8.4 | 8.4.27 | Prise en charge. |
| 8.3 | 8.3.36 | Prise en charge. |
| 8.2 | 8.2.35 | Prise en charge jusqu’au 31 décembre 2026. Prévoyez le passage à une branche plus récente. |
| 8.1 | aucune | Fin de vie. Voir plus bas. |
| 8.0 | aucune | Fin de vie. Voir plus bas. |
| 7.4 | aucune | Fin de vie. Voir plus bas. |
Certaines distributions gardent l’ancien numéro
Les distributions Linux et les hébergeurs publient leurs propres paquets corrigés. Certaines, comme Ubuntu et le PHP par défaut de RHEL 9, ajoutent le correctif et gardent l’ancien numéro de PHP. Par exemple, Ubuntu 24.04 corrige PHP 8.3.6 avec le paquet 8.3.6-0ubuntu0.24.04.13, et php -v affiche toujours 8.3.6.
Un ancien numéro ne signifie pas toujours un PHP non corrigé.
Comparez la version du paquet, pas seulement le numéro de PHP. La page Fixed PHP packages on Linux (en anglais) donne le paquet corrigé pour chaque distribution.
Voir votre version de PHP
Sur un hébergement mutualisé, regardez dans le panneau de contrôle de votre hébergement ou demandez à votre hébergeur. WordPress, Drupal et les applications similaires affichent souvent la version de PHP dans leur interface d’administration.
Sur votre propre serveur, cette commande affiche la version de PHP en ligne de commande. Le site web peut utiliser un autre PHP, par exemple PHP-FPM.
php -v
Pour voir le PHP utilisé par le site, créez à la racine web un fichier au nom aléatoire qui se termine par .php, par exemple info-7f3k9q.php, avec ce contenu :
<?php phpinfo();
Ouvrez-le une fois dans le navigateur et lisez la version en haut de la page. Supprimez le fichier tout de suite : il affiche beaucoup de données privées.
Que faire
- Mettez à jour PHP. Installez 8.5.12, 8.4.27, 8.3.36 ou 8.2.35, ou une version plus récente de la même branche. Un paquet corrigé de votre distribution Linux ou de votre hébergeur convient aussi.
- Redémarrez PHP. Redémarrez Apache, chaque pool PHP-FPM et les processus PHP de longue durée. Les anciens processus gardent l’ancien code jusqu’à leur arrêt.
- Vérifiez à nouveau. Contrôlez la version du PHP utilisé par le site, pas seulement celle de la ligne de commande.
Commandes pour votre propre serveur
Les commandes sont celles des guides en anglais, avec leurs commentaires en anglais.
Debian et Ubuntu (indiquez votre branche dans le nom du service) :
# show installed PHP packages and versions
dpkg -l | grep -E '^ii +(php[0-9.]*-(fpm|cgi|common)|libapache2-mod-php)'
# install the update
sudo apt update && sudo apt upgrade
# restart (use your branch, for example php8.3-fpm)
sudo systemctl restart php8.3-fpm
sudo systemctl restart apache2
RHEL, AlmaLinux et Rocky Linux :
# show the installed version (php8.4-common for PHP 8.4 on version 10)
rpm -q php-common
# show which module stream is enabled (marked [e])
dnf module list php
# install the update
sudo dnf upgrade 'php*'
# restart
sudo systemctl restart php-fpm
sudo systemctl restart httpd
Alpine, conteneurs et panneaux de contrôle : voir Linux et Platforms (en anglais).
Notre conseil Dans un conteneur, téléchargez l’image de base mise à jour, reconstruisez votre image et recréez le conteneur. Un simple redémarrage garde l’ancien PHP.
Sur un hébergement mutualisé
Vous ne pouvez pas mettre à jour PHP vous-même, c’est votre hébergeur qui le fait. Copiez ce message, ajoutez votre domaine et envoyez-le au support de votre hébergeur :
Bonjour,
Pouvez-vous confirmer que le PHP de mon hébergement inclut les correctifs de PHP2Shell (CVE-2026-109618 et CVE-2026-109619) ? Domaine : example.com
Quelle version et quel build exacts de PHP utilise mon domaine ? S’agit-il de la version 8.5.12, 8.4.27, 8.3.36 ou 8.2.35, d’une version plus récente, ou d’un build avec le correctif rétroporté (backport) ?
PHP-FPM, le serveur web et les autres processus PHP ont-ils été redémarrés après la mise à jour ?
Merci.
PHP 7.4, 8.0 et 8.1
Le projet PHP ne publie plus de versions pour ces branches. Son équipe de sécurité a seulement publié de petits correctifs du code source. Pour les branches plus anciennes, le projet PHP n’a rien publié. Demandez à votre fournisseur un build corrigé ou passez à une branche prise en charge. Voir PHP 7.4, 8.0 et 8.1 (en anglais).
Vérifier votre site
Le vérificateur de php2shell.fyi lit ce que votre site montre en public et liste les signaux PHP qu’il trouve. Il ne peut pas voir un paquet corrigé derrière un ancien numéro. Confirmez le résultat sur le serveur ou auprès de votre hébergeur.
Le vérificateur, son résultat et les guides détaillés sont en anglais.
Ouvrir le vérificateur (en anglais)
Avis officiels en français
Le CERT-FR (France) a publié l’alerte CERTFR-2026-ALE-014 : Multiples vulnérabilités dans PHP.
Le Centre canadien pour la cybersécurité a publié l’alerte AL26-026 : Vulnérabilités critiques touchant PHP.
Sources
- php.net : avis de sécurité du 21 octobre 2026
- php-src : GHSA-w8hw-w9fx-j79w (CVE-2026-109618)
- php-src : GHSA-6wmf-4rv5-p3rp (CVE-2026-109619)
- php2shell.com : le site des chercheurs
- CERT-FR : Multiples vulnérabilités dans PHP
- Centre canadien pour la cybersécurité : Vulnérabilités critiques touchant PHP