Description
Résumé
| Identifiant | CVE-2026-109619 (GHSA-6wmf-4rv5-p3rp) |
| Surnom | PHP2Shell |
| Produit | PHP (moteur / runtime) |
| Type | Use-after-free entre requêtes (état global obsolète) |
| Score CVSS v4.0 | 9,2 (Critique) |
| Authentification requise | Non |
| Impact | Exécution de code à distance |
| Exploitation | Preuves de concept publiques, tentatives de scan observées |
| Découverte | Calif, Wiz Research et OpenAI |
| Correctif | 21 octobre 2026 |
Description
Sur un serveur, un même processus PHP (worker) traite souvent plusieurs requêtes à la suite. Normalement, tout ce qui concerne une requête est remis à zéro avant la suivante.
Avec cette faille, quand une requête se termine par une erreur fatale, certaines données internes continuent de pointer vers une zone mémoire déjà libérée. La requête suivante, traitée par le même worker, peut alors utiliser ces données périmées avant leur réinitialisation.
Un attaquant peut exploiter ce comportement pour exécuter du code. Les chemins d’attaque démontrés passent notamment par le mécanisme de suivi d’envoi de fichiers des sessions (session.upload_progress), qui ne nécessite même pas d’appel à session_start(), et par les traces d’erreurs fatales sur PHP 8.5.
Masquer les erreurs (avec error_reporting, display_errors ou @) ne protège pas.
Versions concernées
- PHP 8.5 avant 8.5.12
- PHP 8.4 avant 8.4.27
- PHP 8.3 avant 8.3.36
- PHP 8.2 avant 8.2.35
- PHP 8.1 et versions plus anciennes (jusqu’à 5.4), sans mise à jour officielle
Configurations exposées : PHP-FPM, Apache avec mod_php, php-cgi, FrankenPHP, LiteSpeed. L’exposition dépend aussi de la configuration PHP.
Versions corrigées
- PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35
- Correctifs source publiés pour PHP 7.4, 8.0 et 8.1
Recommandations
- Mettre à jour immédiatement puis redémarrer tous les workers PHP.
- Vérifier les images Docker, les pipelines de déploiement et les environnements serverless.
- Si la mise à jour est impossible : isoler le serveur d’Internet.
Mesures temporaires (ne remplacent pas la mise à jour)
- Définir
session.upload_progress.enabled=0dansphp.iniou la configuration du pool FPM, puis redémarrer. Ne pas compter surini_set()ou.user.ini. - Sur PHP 8.5 : définir
fatal_error_backtraces=0et redémarrer. - Supprimer les réglages invalides ou obsolètes qui génèrent des avertissements au démarrage des requêtes.
- Corriger les erreurs fatales et dépassements de temps qu’un attaquant peut provoquer (envois de fichiers, imports, callbacks).
Faille liée
Exploitée avec CVE-2026-109618 dans l’outil PHP2Shell.