Description
Résumé
| Identifiant | CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) |
| Surnom | PHP2Shell |
| Produit | PHP (moteur / runtime) |
| Type | Corruption mémoire lors de la gestion d’un dépassement mémoire (OOM), use-after-free |
| Score CVSS v4.0 | 9,2 (Critique) |
| Authentification requise | Non |
| Impact | Exécution de code à distance, fuite de mémoire du serveur |
| Exploitation | Preuves de concept publiques, tentatives de scan observées |
| Découverte | Calif, Wiz Research et OpenAI |
| Correctif | 21 octobre 2026 |
Description
PHP limite la mémoire utilisée par chaque requête avec le paramètre memory_limit. Quand une requête dépasse cette limite, PHP l’interrompt brutalement (via longjmp()).
Le problème : cette interruption peut survenir alors que PHP est en train de préparer des données internes, par exemple pendant l’analyse d’un formulaire avec envoi de fichier. Les données restent à moitié initialisées. Lors du nettoyage de la requête, PHP les considère quand même comme valides et tente de libérer une zone mémoire qui peut encore contenir des données envoyées par l’attaquant.
Un attaquant peut ainsi provoquer volontairement ce dépassement mémoire avec une requête spécialement construite et prendre le contrôle de l’exécution. La faille peut aussi, à elle seule, faire fuiter des données de la mémoire du serveur.
L’attaque se déclenche avant l’exécution du code de l’application. Un site bien codé reste donc vulnérable.
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), qui ne reçoivent plus de mises à jour officielles
Configurations exposées : PHP-FPM, Apache avec mod_php (configuration jugée la plus risquée par l’équipe PHP), php-cgi, FrankenPHP, LiteSpeed.
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 (pour ceux qui compilent eux-mêmes)
Recommandations
- Mettre à jour immédiatement puis redémarrer tous les workers PHP.
- Utiliser les paquets corrigés de votre distribution Linux ou de votre hébergeur.
- Si la mise à jour est impossible : isoler le serveur d’Internet.
Mesures temporaires (ne remplacent pas la mise à jour)
- Définir
memory_limit=-1de façon non modifiable par l’application (par exemple avecphp_admin_value). - Réduire
post_max_size: 8M sans envoi de fichiers, 32M avec. Garderupload_max_filesizeen dessous. - Limiter la taille et le nombre de champs des requêtes au niveau du serveur web ou du proxy.
- Bloquer les requêtes
multipart/form-datasi l’application n’accepte pas de formulaires ou d’envois de fichiers.
Faille liée
Cette faille est exploitée en combinaison avec CVE-2026-109619 dans l’outil PHP2Shell.