Logo Dealmood & Solutions
Dealmood & Solutions
Cybersécurité15 min de lecture

PHP2Shell : deux failles critiques de sécurité découvertes dans PHP

Deux vulnérabilités critiques attribuées à PHP2Shell soulèvent des questions importantes sur la sécurité des applications web. Découvrez leur fonctionnement, les risques d’exécution de code à distance, les versions concernées et les mesures recommandées pour protéger vos serveurs PHP.

Dealmood & Solutions

Équipe éditoriale

PHP2Shell : deux failles critiques de sécurité découvertes dans PHP
Sommaire
  1. PHP2Shell : deux failles critiques dans PHP permettent l’exécution de code à distance
  2. 1. Comprendre le rôle de PHP dans une application web
  3. 2. Les deux vulnérabilités découvertes
  4. 3. Première faille : CVE-2026-109618 et la corruption mémoire
  5. 3.1. Qu’est-ce qu’une erreur Out of Memory ?
  6. 3.2. Où se trouve le problème ?
  7. 3.3. Quelles sont les conséquences possibles ?
  8. 4. Deuxième faille : CVE-2026-109619 et les références mémoire invalides
  9. 4.1. Comprendre la notion de use-after-free
  10. 4.2. Comment ce problème concerne-t-il PHP ?
  11. 4.3. Pourquoi est-ce particulièrement dangereux dans un serveur web ?
  12. 5. Pourquoi ces deux failles sont-elles si préoccupantes ?
  13. 5.1. L’absence d’authentification préalable
  14. 5.2. Une vulnérabilité située dans le moteur lui-même
  15. 5.3. Des protections applicatives potentiellement insuffisantes
  16. 6. Quelles versions de PHP sont concernées ?
  17. 7. Comment vérifier si un serveur utilise une version vulnérable ?
  18. 7.1. Vérification dans le terminal
  19. 7.2. Vérification de la version réellement utilisée
  20. 8. Comment corriger les vulnérabilités PHP2Shell ?
  21. Étape 1 : identifier les applications concernées
  22. Étape 2 : identifier les versions réellement exécutées
  23. Étape 3 : préparer la mise à jour
  24. Étape 4 : installer le correctif officiel
  25. Étape 5 : redémarrer les services concernés
  26. Étape 6 : vérifier le résultat
  27. Étape 7 : examiner les signes éventuels de compromission
  28. 9. Les applications Laravel et WordPress sont-elles concernées ?
  29. Laravel
  30. WordPress
  31. Autres applications PHP
  32. 10. Que peuvent faire les développeurs pour limiter les risques à long terme ?
  33. Conclusion : la sécurité du moteur PHP est aussi importante que celle du code
  34. Références

PHP2Shell : deux failles critiques dans PHP permettent l’exécution de code à distance

Publié le 23 octobre 2026 | Sécurité informatique | Dealmood & Solutions

Deux vulnérabilités critiques affectant le moteur PHP ont été rendues publiques le 21 octobre 2026. Référencées sous les identifiants CVE-2026-109618 et CVE-2026-109619, elles peuvent permettre à un attaquant distant, dans certaines conditions, d’exécuter du code arbitraire sur un serveur sans disposer préalablement d’un compte utilisateur.

Ces vulnérabilités, désignées collectivement sous le nom de PHP2Shell dans plusieurs avis de sécurité, concernent le fonctionnement interne de PHP, notamment la gestion des erreurs mémoire et l’état interne utilisé pendant le traitement des requêtes HTTP.

Le risque est particulièrement important pour les serveurs qui exposent des applications PHP sur Internet. Un site peut en effet contenir un code applicatif correctement développé tout en restant vulnérable si le moteur PHP qui l’exécute n’est pas à jour.

Dans cet article, nous allons comprendre ce que sont ces deux failles, comment elles fonctionnent au niveau technique, quelles applications peuvent être concernées et quelles mesures les développeurs et les administrateurs système doivent prendre.

1. Comprendre le rôle de PHP dans une application web

PHP est un langage de programmation principalement utilisé pour développer des applications web côté serveur. Il permet notamment de traiter les requêtes HTTP, d’interagir avec des bases de données, de gérer les sessions et de produire des pages HTML ou des réponses JSON.

Des plateformes comme WordPress, Drupal et de nombreuses applications développées avec Laravel reposent sur PHP.

Lorsqu'un utilisateur consulte une page web dynamique, le traitement suit généralement ce chemin :

  1. Le navigateur envoie une requête HTTP au serveur.
  2. Le serveur web transmet la requête au moteur PHP, selon la configuration utilisée.
  3. PHP traite les données reçues et exécute le code de l’application.
  4. L’application peut interroger une base de données ou appeler d’autres services.
  5. PHP produit une réponse que le serveur renvoie au navigateur.

PHP intervient donc au cœur du traitement des requêtes.

Il est important de distinguer deux niveaux de sécurité :

  • La sécurité applicative concerne le code développé par l’équipe : authentification, autorisations, validation des entrées, requêtes SQL et gestion des sessions.
  • La sécurité du moteur PHP concerne l’environnement qui exécute ce code : gestion de la mémoire, traitement des erreurs, analyse des requêtes et fonctionnement interne du moteur.

Les vulnérabilités PHP2Shell concernent principalement le second niveau. C’est précisément ce qui les rend préoccupantes : une protection mise en place uniquement dans le code applicatif peut ne pas suffire.

2. Les deux vulnérabilités découvertes

Les deux failles ont été publiées sous les identifiants suivants :

| CVE-2026-109618 | Corruption de l’état interne lors de la gestion d’une erreur de mémoire insuffisante | Exécution de code à distance |

| CVE-2026-109619 | Conservation de références internes devenues invalides après la libération de la mémoire | Exécution de code à distance |

Ces vulnérabilités ont un point commun : elles concernent la manière dont PHP gère son état interne lorsque le traitement d’une requête se termine de façon anormale.

Pour comprendre leur importance, il faut examiner quelques notions fondamentales de programmation système.

3. Première faille : CVE-2026-109618 et la corruption mémoire

3.1. Qu’est-ce qu’une erreur Out of Memory ?

Lorsqu’un programme fonctionne, il utilise la mémoire vive pour stocker temporairement des données : variables, objets, chaînes de caractères, structures internes et résultats de calcul.

Une erreur Out of Memory, souvent abrégée en OOM, survient lorsqu’une opération ne peut plus obtenir la mémoire nécessaire à son exécution.

Dans PHP, cette situation peut se produire lorsqu’une requête nécessite trop de mémoire par rapport aux limites configurées ou aux ressources disponibles.

Prenons un exemple simplifié :

PHP
<?php

$data = str_repeat('A', 1024 * 1024);

echo strlen($data);

Ce programme crée une chaîne de caractères d’environ un mégaoctet, puis affiche sa longueur.

Dans un environnement où la mémoire disponible est suffisante, il fonctionne normalement. Si une application tente de manipuler des quantités de données beaucoup plus importantes, elle peut rencontrer une limite mémoire.

Le problème ne se limite pas à l’échec de l’allocation. Le moteur doit également gérer proprement l’arrêt de l’opération, libérer les ressources nécessaires et conserver un état interne cohérent.

3.2. Où se trouve le problème ?

La vulnérabilité CVE-2026-109618 concerne la gestion de certaines erreurs de mémoire insuffisante.

Lorsqu’une telle erreur interrompt brutalement le traitement, certaines structures internes peuvent se retrouver dans un état incomplet ou incohérent. Le nettoyage qui suit peut alors manipuler des données qui n’ont pas été correctement initialisées.

En programmation système, ce type de situation est particulièrement dangereux.

Un programme peut, par exemple, s’attendre à ce qu’une structure contienne un pointeur valide alors que celui-ci n’a jamais été correctement défini. Si le programme utilise ensuite cette valeur comme si elle était valide, son comportement peut devenir imprévisible.

La faille réside donc dans la gestion de l’état interne du moteur après une erreur fatale, et non simplement dans le fait qu’une application consomme trop de mémoire.

3.3. Quelles sont les conséquences possibles ?

Dans certaines conditions, cette corruption de mémoire peut être exploitée pour obtenir une exécution de code à distance.

L’expression Remote Code Execution (RCE) désigne une situation dans laquelle un attaquant peut faire exécuter des instructions de son choix par un système distant.

Si une exploitation réussit, les conséquences peuvent inclure :

  • l’exécution de commandes avec les privilèges du processus PHP ;
  • l’accès aux fichiers accessibles à ce processus ;
  • la compromission de données utilisées par l’application ;
  • l’altération de fichiers ou de contenus hébergés ;
  • une compromission plus large du serveur si d’autres protections sont insuffisantes.

L’impact réel dépend notamment des privilèges du processus, de l’isolation du serveur et des ressources auxquelles il peut accéder.

4. Deuxième faille : CVE-2026-109619 et les références mémoire invalides

La deuxième vulnérabilité concerne un autre problème classique de programmation système : l’utilisation d’un état interne qui n’a pas été correctement réinitialisé.

4.1. Comprendre la notion de use-after-free

Le terme anglais use-after-free désigne une erreur qui se produit lorsqu’un programme utilise une zone mémoire après que celle-ci a été libérée.

Pour comprendre ce problème, imaginons un programme qui alloue de la mémoire pour conserver les informations d’un objet.

Le déroulement normal est le suivant :

  1. Le programme réserve une zone mémoire.
  2. Il y stocke des informations.
  3. Il utilise ces informations.
  4. Il libère la mémoire lorsqu’elle n’est plus nécessaire.
  5. Il cesse d’utiliser les références qui pointaient vers cette zone.

Le problème apparaît lorsque le programme libère la mémoire, mais conserve une référence vers celle-ci.

Cette référence devient alors invalide. La zone mémoire peut ensuite être réutilisée pour stocker d’autres données.

Si le programme tente malgré tout de lire ou de manipuler les anciennes données à travers cette référence, il peut accéder à un contenu inattendu.

4.2. Comment ce problème concerne-t-il PHP ?

PHP utilise des structures internes et des variables globales pour gérer différentes étapes du traitement d’une requête.

Certaines de ces structures peuvent temporairement référencer des données propres à une requête HTTP.

Or, ces données doivent être libérées et les références correspondantes doivent être réinitialisées au bon moment.

La vulnérabilité CVE-2026-109619 concerne des situations dans lesquelles cet état interne peut rester invalide après la libération de la mémoire ou être rétabli de manière incorrecte.

Le moteur peut alors conserver une référence vers une zone mémoire qui n’est plus valide.

Si cette référence est ensuite utilisée avant que l’état interne ait été correctement réinitialisé, le moteur risque de manipuler des données inattendues.

4.3. Pourquoi est-ce particulièrement dangereux dans un serveur web ?

Un serveur web traite souvent un grand nombre de requêtes successives.

Le moteur doit donc gérer correctement le cycle de vie des données associées à chaque requête, y compris lorsque certaines opérations échouent.

Une erreur dans cette gestion peut avoir des conséquences importantes, car le processus PHP peut continuer à traiter d’autres requêtes tout en manipulant un état interne incorrect.

Selon les conditions d’exploitation, une vulnérabilité de type use-after-free peut provoquer un plantage, une corruption mémoire ou, dans les cas les plus graves, permettre l’exécution de code arbitraire.

Dans le cas de CVE-2026-109619, le risque documenté est suffisamment sérieux pour que les responsables de PHP recommandent une mise à jour immédiate vers une version corrigée.

5. Pourquoi ces deux failles sont-elles si préoccupantes ?

Plusieurs éléments expliquent la gravité de ces vulnérabilités.

5.1. L’absence d’authentification préalable

Les avis de sécurité indiquent qu’une exploitation réussie peut permettre l’exécution de code à distance sans authentification préalable.

Cela signifie qu’un attaquant n’a pas nécessairement besoin de posséder un compte sur l’application visée pour tenter d’exploiter la faille.

Il faut néanmoins distinguer deux notions : une vulnérabilité exploitable sans authentification ne signifie pas que tous les serveurs seront compromis automatiquement. L’exploitation dépend notamment de la version de PHP, de la configuration et des conditions techniques.

5.2. Une vulnérabilité située dans le moteur lui-même

Lorsqu’une faille concerne le moteur PHP, elle peut toucher différentes applications qui utilisent ce même environnement.

Un site WordPress, une API Laravel et une application PHP développée sur mesure peuvent ainsi être exposés si leur environnement d’exécution utilise une version vulnérable.

Cela ne signifie pas que toutes ces applications possèdent une faille dans leur propre code. Le problème peut se trouver dans la couche commune qui exécute leurs instructions.

5.3. Des protections applicatives potentiellement insuffisantes

Un développeur peut mettre en place une authentification robuste, valider les entrées utilisateur, utiliser des requêtes SQL préparées et appliquer les bonnes pratiques de sécurité.

Ces mesures restent essentielles, mais elles ne corrigent pas une erreur mémoire présente dans le moteur PHP.

De même, l’ajout d’un pare-feu applicatif peut contribuer à réduire certains risques, mais il ne remplace pas l'installation du correctif officiel.

La leçon à retenir : la sécurité d’une application dépend à la fois de son code, de ses dépendances et de l’environnement dans lequel elle s’exécute.

6. Quelles versions de PHP sont concernées ?

Le 21 octobre 2026, l’équipe PHP a publié des versions de maintenance intégrant des correctifs pour les deux vulnérabilités.

Les versions corrigées annoncées sont les suivantes :

| PHP 8.5 | 8.5.11 | 8.5.12 | | PHP 8.4 | 8.4.26 | 8.4.27 | | PHP 8.3 | 8.3.35 | 8.3.36 | | PHP 8.2 | 8.2.34 | 8.2.35 |

Les versions antérieures de ces branches sont également concernées.

Les branches PHP 8.1 et antérieures nécessitent une attention particulière, car elles ne bénéficient plus toutes de mises à jour de sécurité régulières de la part du projet PHP. Certains distributeurs peuvent publier des correctifs spécifiques, mais leur disponibilité dépend de l’environnement utilisé.

Il est donc recommandé de vérifier la version réellement installée et les avis de sécurité du fournisseur de la plateforme.

7. Comment vérifier si un serveur utilise une version vulnérable ?

La première étape consiste à identifier la version de PHP utilisée.

7.1. Vérification dans le terminal

Sur un serveur Linux ou une machine de développement, exécutez :

Bash / terminal
php -v

La commande affiche la version du moteur PHP disponible dans le terminal.

Exemple de résultat :

Plain text
PHP 8.4.26 (cli) ...

Dans cet exemple, la version affichée est antérieure à la version corrigée 8.4.27.

Il faut toutefois noter que la commande php -v affiche généralement la version du PHP en ligne de commande. Celle-ci peut être différente de la version utilisée par le serveur web.

7.2. Vérification de la version réellement utilisée

Un serveur peut disposer de plusieurs versions de PHP installées simultanément.

Par exemple :

  • PHP 8.4 pour les scripts exécutés dans le terminal ;
  • PHP 8.3 pour une application web ;
  • une version distincte utilisée par PHP-FPM ;
  • une version gérée directement par l’hébergeur.

Il est donc nécessaire de vérifier également la configuration du serveur web et les versions associées aux applications hébergées.

Sur un environnement utilisant PHP-FPM, la version du service actif doit notamment être contrôlée.

Sur un hébergement mutualisé ou administré, le panneau de contrôle peut afficher la version affectée à chaque site.

8. Comment corriger les vulnérabilités PHP2Shell ?

La mesure prioritaire est d'installer une version corrigée du moteur PHP.

Étape 1 : identifier les applications concernées

Recensez les sites web, les API et les services qui utilisent PHP.

Vérifiez les environnements de développement, de test et de production, ainsi que les éventuels serveurs secondaires.

Étape 2 : identifier les versions réellement exécutées

Ne vous limitez pas à la version indiquée par votre terminal. Vérifiez également les services PHP-FPM, les modules du serveur web et les versions configurées chez votre hébergeur.

Étape 3 : préparer la mise à jour

Avant toute mise à jour en production, vérifiez la compatibilité de vos applications avec la version corrigée.

Consultez les dépendances Composer, les exigences du framework et les extensions PHP utilisées.

Effectuez une sauvegarde appropriée et, si possible, testez la mise à jour dans un environnement distinct.

Étape 4 : installer le correctif officiel

Utilisez une version corrigée adaptée à votre branche PHP et à votre système d'exploitation.

Évitez de télécharger des exécutables depuis des sources non fiables.

Les versions publiées par l'équipe PHP le 21 octobre 2026 sont les suivantes :

  • PHP 8.5.12 ;
  • PHP 8.4.27 ;
  • PHP 8.3.36 ;
  • PHP 8.2.35.

La documentation et les téléchargements officiels sont disponibles sur le site de PHP.

Étape 5 : redémarrer les services concernés

Après la mise à jour, redémarrez ou rechargez les services concernés conformément à la procédure de votre environnement.

Cela permet de s'assurer que les processus utilisent effectivement le moteur corrigé.

Étape 6 : vérifier le résultat

Contrôlez à nouveau les versions installées et testez le fonctionnement de l'application.

Vérifiez les journaux du serveur et assurez-vous que les services concernés utilisent bien la version corrigée.

Étape 7 : examiner les signes éventuels de compromission

Si un serveur exposé a fonctionné avec une version vulnérable, la mise à jour ne suffit pas nécessairement à démontrer qu'aucune exploitation n'a eu lieu auparavant.

En cas de suspicion, examinez les journaux disponibles, les fichiers modifiés, les comptes système, les processus inhabituels et les connexions sortantes.

Si une compromission est confirmée ou fortement suspectée, appliquez une procédure de réponse à incident. Celle-ci peut notamment nécessiter l'isolation du serveur, la conservation des preuves, la rotation des secrets et la reconstruction de l'environnement à partir d'une source fiable.

9. Les applications Laravel et WordPress sont-elles concernées ?

La question est importante, car PHP est utilisé par de nombreuses plateformes.

Laravel

Laravel est un framework PHP qui fournit des outils pour développer des applications web et des API.

Il apporte des mécanismes de sécurité utiles, mais il s'exécute sur le moteur PHP installé dans l'environnement.

Par conséquent, une application Laravel utilisant une version vulnérable de PHP peut être exposée à un problème qui se situe dans le moteur lui-même.

Mettre à jour Laravel ne suffit donc pas nécessairement à corriger ces vulnérabilités : la version de PHP doit également être vérifiée et corrigée.

WordPress

WordPress utilise PHP pour exécuter son code et celui de ses extensions.

Un site WordPress peut être correctement configuré du point de vue des comptes utilisateurs et des extensions, tout en utilisant une version vulnérable du moteur.

La mise à jour de WordPress et de ses extensions reste nécessaire, mais elle ne remplace pas la mise à jour de PHP.

Autres applications PHP

Le même principe s'applique aux applications développées avec Drupal, Joomla ou du PHP natif.

La question essentielle est de savoir quelle version du moteur exécute réellement les requêtes HTTP.

10. Que peuvent faire les développeurs pour limiter les risques à long terme ?

Les vulnérabilités PHP2Shell rappellent plusieurs principes importants en matière de développement logiciel.

Maintenir les environnements à jour. Les versions du langage, les bibliothèques et les composants système doivent être suivis et actualisés régulièrement.

Automatiser la vérification des dépendances. Composer permet de gérer les dépendances PHP, mais la vérification des paquets ne remplace pas la mise à jour du moteur PHP lui-même.

Séparer les responsabilités. Une application ne devrait pas disposer de privilèges système supérieurs à ceux dont elle a réellement besoin.

Isoler les services. L'utilisation de conteneurs, de comptes de service dédiés et de permissions restrictives peut limiter l'impact d'une compromission.

Surveiller les environnements de production. Les journaux, les alertes et les mécanismes de détection peuvent aider à identifier des comportements inhabituels.

Préparer une procédure de mise à jour. Une organisation doit savoir comment identifier une version vulnérable, tester un correctif, le déployer et vérifier son application.

Ces pratiques ne rendent pas un système invulnérable. Elles contribuent toutefois à réduire la probabilité d'exploitation et à limiter les conséquences d'un incident.

Conclusion : la sécurité du moteur PHP est aussi importante que celle du code

Les vulnérabilités CVE-2026-109618 et CVE-2026-109619 montrent qu'un problème situé au niveau du moteur d'exécution peut exposer de nombreuses applications web, même lorsque leur code applicatif ne présente pas directement la faiblesse en question.

La première vulnérabilité concerne la corruption de l'état interne pendant la gestion d'une erreur de mémoire insuffisante. La seconde concerne des références internes qui peuvent rester invalides après la libération de la mémoire.

Dans certaines conditions, ces erreurs peuvent être exploitées pour exécuter du code à distance sans authentification préalable.

Pour les développeurs, les administrateurs système et les responsables d'applications, la priorité est claire : identifier les versions utilisées, installer les correctifs officiels et vérifier que tous les services concernés exécutent effectivement une version corrigée.

La sécurité ne s'arrête pas au code que l'on écrit. Elle dépend aussi des composants qui l'exécutent, de leur configuration et de la capacité à les maintenir à jour.

Chez Dealmood & Solutions, nous considérons la veille technologique et la maintenance de sécurité comme des éléments essentiels du cycle de vie d'une application logicielle.

Références

  • Équipe PHP : annonce des versions correctives du 21 octobre 2026.
  • Documentation officielle PHP : historique des modifications des branches 8.2, 8.3, 8.4 et 8.5.
  • NHS England Digital : avis de sécurité consacré aux vulnérabilités PHP2Shell.
  • Centre canadien pour la cybersécurité : alerte concernant CVE-2026-109618 et CVE-2026-109619.

Commentaires (0)

Vous devez être connecté pour laisser un commentaire.

Se connecter

Aucun commentaire pour le moment. Soyez le premier à réagir !