Aller au contenu

Alerte sécurité · PHP

Faille critique PHP2Shell : votre site est-il vraiment corrigé ?

Le 21 octobre 2026, le projet PHP a corrigé deux failles critiques qui permettent de prendre la main sur un serveur web, sans mot de passe. La DGSSI a publié un bulletin critique le jour même, puis un second, le lendemain, sur les correctifs mal appliqués. Les versions à installer, les pièges, et comment prouver que votre site est vraiment protégé.

  • Publié le 27 octobre 2026
  • Par Mehdi Najeddine
  • Lecture : 9 min
Peinture : une tour de serveurs dans une lumière ocre, dont un module entrouvert laisse échapper une lueur et un fil rouges

L'essentiel

  1. Deux failles de PHP, notées 9,2 sur 10, permettent d'exécuter du code à distance sans authentification. La DGSSI les classe critiques et signale un code d'attaque public.

  2. Installez 8.5.12, 8.4.27, 8.3.36 ou 8.2.35, ou plus récent : aucun réglage ne protège complètement.

  3. Une mise à jour ne compte qu'après le redémarrage de PHP-FPM ou d'Apache, et la recréation des conteneurs.

  4. PHP 8.1 et plus ancien n'ont pas de version officielle corrigée : correctif de la distribution, puis migration.

  5. Un pare-feu applicatif réduit le risque, mais ne remplace jamais la mise à jour.

la note de gravité (CVSS v4, sur 10) de chacune des deux failles
9,2
branches de PHP corrigées le 21 octobre 2026, de 8.2 à 8.5
4
failles (CVE) publiées par le projet PHP depuis le 1er juillet 2026
15
la fin du support de sécurité de PHP 8.2, en 2026
31 déc.

Chronologie

Deux failles critiques, corrigées dans l'urgence

Les deux failles portent les identifiants CVE-2026-109618 et CVE-2026-109619. La première corrompt la mémoire lorsqu'une requête épuise la mémoire allouée ; la seconde réutilise un état libéré par la requête précédente. Les bulletins de sécurité, dont ceux de la DGSSI, les désignent sous le nom « PHP2Shell » : prendre le contrôle du serveur depuis une simple requête web.

La publication a été avancée. Selon la PHP Foundation, les identifiants ont fuité la veille avec une note erronée, et une vidéo de démonstration a été publiée par erreur. Les détails ayant circulé avant le correctif, il faut traiter le sujet cette semaine.

Figure 1De la découverte aux correctifs
  1. 11 août – 18 sept.

    Signalements de Calif, de Wiz puis d'OpenAI à l'équipe sécurité de PHP

    PHP Foundation

  2. 20 oct.

    Annonce d'une version de sécurité critique ; les identifiants des failles circulent avant le correctif

    php.net

  3. 21 oct., 3 h 02 UTC

    Cloudflare active des règles de protection sur toutes ses offres, gratuite comprise

    Cloudflare

  4. 21 oct., 14 h UTC

    Versions 8.5.12, 8.4.27, 8.3.36 et 8.2.35 : les deux failles sont corrigées

    php.net

  5. 21 oct.

    Bulletin critique de la DGSSI (69782110/26)

    DGSSI

  6. 22 oct.

    Second bulletin de la DGSSI (69832210/26) : les risques de correctif mal appliqué

    DGSSI

  7. 23 oct.

    Avis sur une troisième faille (CVE-2026-115560), avec un contournement en attendant son correctif

    php.net

  8. 26 oct.

    Nouvelles versions Windows pour une faille de la bibliothèque Brotli (CVE-2026-111497)

    php.net

Sources : php.net, PHP Foundation, DGSSI, Cloudflare.

Périmètre

Tout serveur qui exécute PHP pour le web

Tous les modes d'exécution sont concernés : PHP-FPM derrière Nginx ou Apache, Apache avec mod_php, php-cgi, FrankenPHP et LiteSpeed (avis de php.net).

  1. Apache avec mod_php : le risque maximal

    L'avis officiel décrit une attaque démontrée sans authentification, avec les réglages par défaut, avant même que le code de l'application ne s'exécute (GHSA-w8hw-w9fx-j79w).
  2. PHP-FPM : concerné aussi

    La PHP Foundation indique qu'une exécution de code y a été confirmée en passant par le code de l'application.
  3. Tous les CMS et frameworks PHP

    WordPress, Drupal, Joomla, PrestaShop, Magento, Laravel, Symfony. Mettre à jour le CMS ou ses extensions ne suffit pas : la faille est dans PHP.
  4. Les sites en JavaScript, sauf back-office PHP

    Un site Next.js n’est pas concerné, sauf si WordPress, Drupal ou une API Laravel ou Symfony tourne derrière lui.

Versions

Une seule protection complète : la mise à jour

Le projet PHP est catégorique : aucun contournement n'est complet. Installez la version corrigée de votre branche, ou le paquet de sécurité de votre distribution.

Figure 2Versions corrigées le 21 octobre 2026 et fin du support de sécurité
Versions de PHP corrigées le 21 octobre 2026 et fin du support de sécurité
BrancheVersion corrigéeFin du supportAction
PHP 8.58.5.1231 décembre 2029Mettre à jour
PHP 8.48.4.2731 décembre 2028Mettre à jour
PHP 8.38.3.3631 décembre 2027Mettre à jour
PHP 8.28.2.3531 décembre 2026Mettre à jour, puis passer en 8.3 ou 8.4 avant la fin de l’année
PHP 8.1 et avantAucuneTerminéCorrectif de la distribution ou d’un éditeur de support, puis migration

Source : php.net, Supported Versions et avis du 21 octobre 2026.

Pièges

Trois erreurs qui laissent un serveur vulnérable

Le lendemain de son alerte, la DGSSI a publié un second bulletin (69832210/26) sur les erreurs qui laissent un serveur vulnérable alors que l'équipe pense l'avoir corrigé.

1. Installer le paquet sans redémarrer les services. Le fichier sur le disque est à jour, mais les processus en mémoire exécutent toujours l'ancien moteur : workers PHP-FPM, Apache avec mod_php, CGI, conteneurs en cours d'exécution. Avec Docker, télécharger la nouvelle image ne suffit pas : il faut recréer les conteneurs.

Figure 3Le correctif est installé, mais c'est l'ancien moteur qui tourne
Peinture : un serveur qui tourne encore avec une vieille cartouche grise, tandis qu'une cartouche neuve cerclée de rouge attend sur un plateau

2. Prendre un contournement pour un correctif. Désactiver un réglage de PHP ou filtrer les envois de formulaires (multipart/form-data) sur un pare-feu ou un proxy limite le risque, mais seulement en attendant : ces protections peuvent être contournées.

Figure 4Le pare-feu filtre, il ne répare pas
Peinture : un moucharabieh devant une baie de serveurs dont la façade est traversée par une fissure rouge

Cloudflare le rappelle lui-même : ses règles s'ajoutent à la mise à jour, elles ne la remplacent pas (Cloudflare).

3. Appliquer un correctif non officiel ou mal validé. Pour PHP 8.1 et plus ancien, il n'y a pas de version officielle. Recompiler soi-même ou installer un paquet d'origine incertaine expose à des régressions, ou à l'oubli d'un module dont le site a besoin. Passez par votre distribution ou un éditeur de support reconnu.

Plan d'action

7 vérifications pour être vraiment protégé

  1. Faire l'inventaire

    Production, préproduction, tâches planifiées, workers, images Docker, anciens sites oubliés : tout ce qui exécute PHP.
  2. Mettre à jour PHP

    Version corrigée de votre branche, ou paquet de sécurité de votre distribution. En mutualisé, demandez à l'hébergeur la version en service.
  3. Redémarrer les services

    PHP-FPM, et Apache s’il utilise mod_php : sinon, l’ancien moteur reste en mémoire.
  4. Recréer les conteneurs

    Docker ou Kubernetes : reconstruire l’image depuis une base corrigée, puis recréer les conteneurs.
  5. Vérifier la version vue par le site

    WordPress : Outils, Santé du site, rubrique Serveur. Drupal : Rapports, Rapport d'état. La commande php -v ne prouve rien pour le site.
  6. Garder le pare-feu actif

    Sur Cloudflare, l'offre gratuite est protégée d'office ; sur les offres payantes, vérifiez que les règles gérées sont en mode blocage.
  7. Chercher des traces si la mise à jour a tardé

    Comptes administrateurs récents, fichiers PHP inconnus dans les dossiers d’envoi et de cache, tâches planifiées ajoutées, connexions sortantes inhabituelles.

Les commandes utiles, pour Debian et Ubuntu avec PHP 8.3 : remplacez 8.3 par votre branche. Sur Red Hat, AlmaLinux ou Rocky Linux, les services s'appellent php-fpm et httpd.

# Redémarrer les services (Debian, Ubuntu)
sudo systemctl restart php8.3-fpm
sudo systemctl restart apache2

# Version du binaire PHP-FPM installé
php-fpm8.3 -v

# Date de démarrage du service : postérieure à la mise à jour ?
systemctl status php8.3-fpm | grep Active

# Date de la mise à jour du paquet
zgrep -h " upgrade php8.3-fpm" /var/log/dpkg.log* | sort | tail -1
# Image officielle : récupérer l'image corrigée et recréer les conteneurs
docker compose pull
docker compose up -d --force-recreate

# Image construite par vos soins : reconstruire depuis une base corrigée
docker compose build --pull --no-cache
docker compose up -d --force-recreate

# Version dans le conteneur (remplacer « php » par le nom du service)
docker compose exec php php -v

# Kubernetes, après avoir changé l'image du déploiement
kubectl rollout restart deployment/mon-app

Suites

Deux autres avis à suivre

CVE-2026-115560 touche aussi les versions corrigées le 21 octobre. Signalée le 23 octobre, elle ne se déclenche que dans une configuration précise : l'application change de format de sérialisation des sessions pendant l'exécution, alors que la progression d'envoi est active. En attendant le correctif, php.net recommande de désactiver ce réglage dans php.ini ou dans le pool PHP-FPM, puis de redémarrer. Un réglage par ini_set() ou par fichier .user.ini ne suffit pas.

; Dans php.ini
session.upload_progress.enabled = 0

; Ou dans le pool PHP-FPM (par exemple /etc/php/8.3/fpm/pool.d/www.conf)
php_admin_flag[session.upload_progress.enabled] = off

Peu de sites utilisent cette fonction : vérifiez-le avant de la désactiver, notamment sur les formulaires d'envoi de fichiers avec barre de progression.

CVE-2026-111497 ne concerne que PHP sous Windows. Le 26 octobre, php.net a publié de nouvelles versions Windows (8.5.12-1, 8.4.27-1, 8.3.36-1, 8.2.35-1) pour une faille de la bibliothèque de décompression Brotli. Elle n'est atteignable que par cURL, avec la décompression automatique des réponses HTTP, qui n'est pas activée par défaut.

Tendance

Pourquoi les failles PHP se multiplient

15 failles publiées depuis le 1er juillet 2026. Selon la PHP Foundation, les chercheurs utilisent désormais l'IA pour trouver et valider des failles : la fondation cite un scan mené par Alpha-Omega avec Claude Mythos d'Anthropic plus tôt dans l'année, et l'outil Daybreak Red d'OpenAI pour valider les rapports. Elle a aussi reçu plus de 100 signalements invalides, redondants ou non reproductibles, et renforce son équipe sécurité.

Figure 5Plus d'outils pour chercher, plus de failles trouvées
Peinture : une loupe devant une rangée de serveurs révèle des fissures rouges invisibles à l’œil nu

Maroc

DGSSI et loi 09-08 : ce qui s'applique

Les bulletins de la DGSSI font référence. Via son centre de veille maCERT, la DGSSI publie les failles critiques : ceux du 21 et du 22 octobre s'adressent à toutes les organisations marocaines.

La loi 09-08 impose de protéger les données personnelles par des mesures techniques adaptées (voir notre guide CNDP). Laisser un serveur sans correctif après une alerte critique publique est difficile à justifier en cas de fuite.

Calendrier

Et après : PHP 8.2, PHP 8.6 et Drupal

  1. PHP 8.2 s’arrête le 31 décembre

    Plus aucun correctif de sécurité ensuite. Si vous venez de passer en 8.2.35, planifiez dès maintenant la 8.3 ou la 8.4.
  2. PHP 8.6 arrive

    En version candidate : RC4 le 21 octobre, avec les deux correctifs, RC5 prévue le 5 novembre (php.net). Pas en production avant sa sortie officielle.
  3. Drupal 10 s’arrête le 9 décembre

    Drupal 11 exige PHP 8.3, Drupal 12 demandera PHP 8.5 : voir notre guide sur la fin de vie de Drupal 10.

FAQ

Questions fréquentes

Mon site WordPress ou Drupal est à jour : suis-je protégé ?

Non. Les failles sont dans le moteur PHP lui-même, pas dans le CMS ni dans ses extensions. Il faut mettre à jour PHP sur le serveur, puis redémarrer les services qui l'exécutent.

Comment savoir quelle version de PHP exécute mon site ?

Dans WordPress : Outils, Santé du site, onglet Informations, rubrique Serveur. Dans Drupal : Rapports, Rapport d'état. Ces pages affichent la version utilisée par le serveur web lui-même : elles permettent aussi de vérifier que le redémarrage a bien eu lieu.

Mon site est sur un hébergement mutualisé : que dois-je faire ?

Demandez à votre hébergeur la version de PHP en service et la date de sa mise à jour, puis contrôlez-la depuis votre CMS. Si l'hébergeur propose plusieurs versions de PHP, choisissez une branche maintenue : 8.3 ou plus.

Cloudflare ou mon pare-feu applicatif suffit-il ?

Non. Cloudflare a activé des règles de protection le 21 octobre, y compris sur son offre gratuite, mais rappelle lui-même qu'elles ne remplacent pas la mise à jour. La DGSSI fait la même mise en garde : un filtrage peut être contourné.

J'utilise PHP 7.4, 8.0 ou 8.1 : que faire ?

Le projet PHP ne publie plus de version pour ces branches. Des correctifs existent pour 7.4, 8.0 et 8.1, mais ils passent par votre distribution Linux ou un éditeur de support. Il faut ensuite migrer vers une version maintenue : Drupal 11, par exemple, exige déjà PHP 8.3.

Faut-il redémarrer le serveur entier ?

Non. Il suffit de redémarrer les services qui exécutent PHP (PHP-FPM, Apache s'il utilise mod_php) et de recréer les conteneurs. Un redémarrage complet du serveur fonctionne aussi, mais n'est pas nécessaire.

La version affichée est plus ancienne que 8.3.36, mais ma distribution dit que la faille est corrigée. Qui croire ?

Votre distribution, si elle a publié un avis de sécurité pour ces CVE : les distributions appliquent souvent le correctif à leur propre version de PHP, sans changer le numéro principal. Vérifiez l'avis de sécurité de Debian, Ubuntu ou Red Hat qui correspond à votre paquet.

Que faire si je pense que mon site a été compromis ?

Isolez le serveur, conservez les journaux, changez les mots de passe et les clés d'API, puis faites appel à un spécialiste de la réponse à incident. Au Maroc, l'incident peut être signalé à la DGSSI. Si des données personnelles sont concernées, la loi 09-08 s'applique.

Sources

Sources officielles

Journal des modifications

  • : Publication. Faits vérifiés sur php.net, GitHub, le blog de la PHP Foundation, la DGSSI et Cloudflare.

Prochaine vérification : correctif de CVE-2026-115560 dans la prochaine version de PHP.

L'auteur

Mehdi Najeddine

Fondateur & Directeur de VOID

VOID maintient et héberge des plateformes PHP (Drupal, WordPress, Symfony) pour des banques, des assureurs et des institutions.

Faire vérifier vos serveurs PHP ?

Nous contrôlons vos serveurs (inventaire, version réellement exécutée, redémarrages, conteneurs, réglages de contournement), puis nous appliquons la mise à jour avec un test du site avant et après.