
Preuve de concept (PoC) d'exploit pour php2shell (CVE-2026-109618 / CVE-2026-109619), démontrant l'exécution de code à distance dans des environnements PHP vulnérables. À des fins de recherche en sécurité et d'éducation uniquement.
Avis critique (CVSS v4.0 : 9.2 - Critique) : Le 20 octobre, les détails de deux failles d'exécution de code à distance (RCE) pré-authentification dans le cœur de PHP ont fuité en ligne avant la divulgation coordonnée. L'exploitation permet l'exécution arbitraire de commandes directement depuis le serveur web.
session-upload-progress-counters.patch)php2shell désigne deux vulnérabilités critiques (CVE-2026-109618 et CVE-2026-109619) affectant des fonctionnalités du cœur de PHP. Le principal vecteur démontré est un use-after-free (UAF) sur le tas dans le mécanisme de progression d'upload de session du cœur de PHP, menant à l'exécution de code arbitraire (zend_call_function / system()).
Le gestionnaire de progression d'upload de PHP (php_session_rfc1867_callback dans ext/session/session.c) stocke deux pointeurs de bucket zval * bruts (post_bytes_processed et current_file_bytes_processed) directement dans des structures HashTable actives.
Lors du traitement de la requête :
POST multipart standard active le suivi de progression avec les valeurs de configuration par défaut (session.upload_progress.enabled = 1).zend_hash_update() détruit l'arbre de données précédent via le destructeur zval_ptr_dtor, libérant le bloc mémoire.zend_fcall_info et zend_internal_function forgées.zend_call_function(), entraînant l'exécution arbitraire de commandes système.php-src standard (y compris les versions 8.4.4 et 8.2.34).--syms) entre zval_ptr_dtor et zend_call_function pour s'adapter aux dispositions binaires propres à chaque distribution (par exemple Debian Bookworm, Ubuntu Noble, Ubuntu Jammy).Le tableau suivant récapitule les versions de PHP affectées par CVE-2026-109618 et CVE-2026-109619, ainsi que leur statut de support et de correctif :
| Branche PHP | Statut | Versions affectées | Version corrigée / sécurisée | Notes |
|---|---|---|---|---|
| PHP 8.5 | Prise en charge (Active) | < 8.5.12 | 8.5.12 | Version de sécurité d'urgence publiée |
| PHP 8.4 | Prise en charge (Active) | < 8.4.27 | 8.4.27 | Version de sécurité d'urgence publiée |
| PHP 8.3 | Prise en charge (Active) | < 8.3.36 | 8.3.36 | Version de sécurité d'urgence publiée |
| PHP 8.2 | Prise en charge (Sécurité uniquement) | < 8.2.35 | 8.2.35 | Version de sécurité d'urgence publiée |
| PHP 8.1 | Fin de vie (EOL) | Toutes les versions 8.1.x | Aucun correctif officiel (EOL) | Définir session.upload_progress.enabled = Off ou utiliser les rétroportages ELS/distribution |
| PHP 8.0 | Fin de vie (EOL) | Toutes les versions 8.0.x | Aucun correctif officiel (EOL) | Prise en charge officielle terminée ; l'atténuation par configuration est obligatoire |
| PHP 7.x | Fin de vie (EOL) | Toutes les versions 7.0 - 7.4 | Aucun correctif officiel (EOL) | La logique du cœur ext/session est vulnérable ; atténuation ou mise à niveau urgente requise |
| PHP 5.x | Fin de vie (EOL) | 5.4.0+ (avec suivi de progression RFC1867) | Aucun correctif officiel (EOL) | Prise en charge officielle terminée ; isoler l'hôte ou désactiver la progression d'upload |
[!WARNING] Les versions PHP 8.1 et antérieures en fin de vie (EOL) ne reçoivent pas de correctifs de sécurité officiels de la part de la PHP Foundation. Pour ces environnements, appliquez immédiatement
session.upload_progress.enabled = Offou recompilez PHP depuis les sources à l'aide du correctif source C fourni.
L'exploitation de php2shell se manifeste généralement par des processus enfants anormaux lancés directement par les processus workers PHP (php-fpm, php-cgi, php-cgi.exe, httpd, apache2).
Surveillez et déclenchez des alertes sur les processus workers PHP exécutant :
/bin/sh, /bin/bash, cmd.exe, powershell.exepython, perlcurl, wget, nc, certutil.exe/dev/tcp/, fsockopen, mkfifowhoami, id, uname -a, ipconfigPour les environnements web sous Linux dépourvus d'agent de détection sur les terminaux, des outils comme le gratuit process-watcher de Florian Roth peuvent être exécutés en mode observation afin de signaler en temps réel le lancement inhabituel de processus enfants.