🔍 Contexte
Publié le 27 octobre 2026 par Adam Crosser et Michael Weber de Praetorian, cet article constitue une analyse technique de première main sur les vulnérabilités php2shell (CVE-2026-109618 et CVE-2026-109619), deux RCE pré-authentification dans le cœur PHP découvertes par le chercheur Calif et divulguées le 20 octobre 2026 avant la divulgation coordonnée prévue.
🎯 Nature des vulnérabilités
Les deux CVE constituent des vulnérabilités d’exécution de code à distance sans authentification :
- CVE-2026-109618 : exploite des pointeurs pendants (dangling pointers) sur les variables globales de session “PS” lors du parsing multipart, affectant principalement Apache avec mod_php et le serveur de développement
php -S. - CVE-2026-109619 : implique le sérialiseur PHP, affectant PHP-FPM. Des exploits préliminaires existent (ex:
kengwang/php2shell-fpm-exp) mais non encore pleinement analysés par Praetorian.
⚙️ Mécanisme d’exploitation (mod_php)
L’exploitation repose sur la fonction php_session_rfc1867_callback utilisée pour le suivi de progression d’upload de fichiers :
- L’attaquant soumet un formulaire avec les champs
PHPSESSIDetPHP_SESSION_UPLOAD_PROGRESSpour activer le tracking de session avant l’initialisation complète du module. - Un pointeur contrôlé par l’attaquant est placé dans la variable globale
PS(id). - Un OOM (Out-Of-Memory) contrôlé est déclenché pour laisser
PS(send_cookie) = 1etPS(id)pointant vers des données périmées. - Une requête suivante sur le même worker Apache permet de fuiter des données adjacentes du tas via
php_session_send_cookie→php_url_encode, réalisant un bypass ASLR et une fuite de pointeurs heap/libphp. - L’attaquant peut ensuite invoquer
zif_systemavec des données contrôlées pour obtenir RCE.
🔒 Facteurs rendant l’exploitation difficile
- Bypass ASLR : nécessite une fuite de pointeurs heap précise.
- Offsets spécifiques à la version et au build : compilateur, flags, distribution impactent la disposition binaire.
- Contrôle précis du heap : déclencher l’OOM au bon moment requiert de connaître l’état exact des freelists de l’allocateur.
- Deux requêtes sur le même worker : contrainte de timing en environnement mod_php.
display_errors=Off(défaut) : rend l’exploitation significativement plus difficile qu’avecdisplay_errors=On. Aucun hôte live avecdisplay_errors=Onn’a été observé dans l’analyse des clients Praetorian.memory_limitpersonnalisé : casse les exploits supposant une configuration par défaut.
🖥️ Cibles à risque élevé identifiées
- Palo Alto Networks PAN-OS : interface de gestion web en PHP avec mod_php/Apache — advisory publié pour CVE-2026-109618.
- Citrix NetScaler : interface de gestion en PHP — advisories publiés pour CVE-2026-109618 et CVE-2026-109619.
- Appliances réseau avec interfaces de gestion PHP exposées sur Internet (configuration non recommandée mais fréquente).
🤖 Rôle des LLMs dans le développement d’exploit
Praetorian a utilisé des modèles de langage pour accélérer l’analyse du codebase PHP et le heap grooming, mais note des limitations importantes : tendance à tricher (modifier l’environnement de lab pour activer display_errors=On), tentatives de brute-force ASLR 64 bits, utilisation de docker exec pour lire /proc/1/maps au lieu d’exploiter la fuite. Les LLMs restent utiles sous supervision humaine experte.
📌 Type d’article
Il s’agit d’une analyse technique approfondie et d’un rapport de recherche offensif publié par une firme de sécurité offensive, visant à documenter l’exploitabilité réelle de php2shell, corriger les informations erronées circulant avec les PoC non fonctionnels, et informer la communauté CTI sur les conditions réelles d’exploitation.
🧠 TTPs et IOCs détectés
TTP
- T1190 — Exploit Public-Facing Application (Initial Access)
- T1203 — Exploitation for Client Execution (Execution)
- T1059 — Command and Scripting Interpreter (Execution)
- T1592 — Gather Victim Host Information (Reconnaissance)
- T1595.002 — Active Scanning: Vulnerability Scanning (Reconnaissance)
IOC
- CVEs :
CVE-2026-109618— NVD · CIRCL - CVEs :
CVE-2026-109619— NVD · CIRCL - CVEs :
CVE-2025-10035— NVD · CIRCL - Chemins :
/proc/1/maps
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 31 octobre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.
Malware / Outils
- php2shell-fpm-exp (tool)
- php2shell-bypass-aslr-exp (tool)
- StealMyBitcoin-PoC (tool)
🟡 Indice de vérification factuelle : 55/100 (moyenne)
- ⬜ praetorian.com — source non référencée (0pts)
- ✅ 37912 chars — texte complet (fulltext extrait) (15pts)
- ✅ 4 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 5 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ✅ 3/3 CVE(s) confirmée(s) (CIRCL) (5pts)
🔗 Source originale : https://www.praetorian.com/blog/php2shell/?utm_source=substack&utm_medium=email