🔍 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 :

  1. L’attaquant soumet un formulaire avec les champs PHPSESSID et PHP_SESSION_UPLOAD_PROGRESS pour activer le tracking de session avant l’initialisation complète du module.
  2. Un pointeur contrôlé par l’attaquant est placé dans la variable globale PS(id).
  3. Un OOM (Out-Of-Memory) contrôlé est déclenché pour laisser PS(send_cookie) = 1 et PS(id) pointant vers des données périmées.
  4. 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.
  5. L’attaquant peut ensuite invoquer zif_system avec 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’avec display_errors=On. Aucun hôte live avec display_errors=On n’a été observé dans l’analyse des clients Praetorian.
  • memory_limit personnalisé : 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