
PHP 8.5.11 - Critique - À distance - UAF - CVE-2026-109619 PHP2Shell. Backtrace fatal du même worker puis diagnostic INI sur Apache mod_php. Labo vs 8.5.12. Avis RCE déduit.
N'importe qui sur Internet peut communiquer avec votre site PHP de la même manière qu'un navigateur, sans mot de passe. Sur la dernière version affectée de PHP 8.5, il peut forcer une requête à mourir avec une erreur fatale, puis envoyer une seconde requête au même worker. PHP 8.5 conserve une trace de pile (backtrace) issue de cette erreur fatale dans la mémoire globale du worker après la disparition du tas (heap) de la requête. La seconde requête la lit lors de l'application d'un indicateur INI résiduel, avant que le moteur ne se soit réinitialisé. Dans ce laboratoire, cette seconde requête tue le processus enfant Apache. Le PHP Group a montré que le même schéma peut conduire à une exécution de code à distance en tant que worker web.
Classe : UAF / Crash Portée : Distante
PHP 8.5.11 (php:8.5.11-apache) vs 8.5.12 corrigé - php.net
CVE-2026-109619 est un état global de worker obsolète. Le laboratoire fixe Apache prefork à un seul processus enfant, produit une erreur fatale avec fatal_error_backtraces=On, puis la consomme avec les directives par répertoire php_flag auto_detect_line_endings on / report_memleaks off appliquées avant php_request_startup(). 8.5.11 : le producteur renvoie 200 avec erreur fatale, le consommateur subit une réinitialisation de connexion, le journal Apache affiche zend_mm_heap corrupted. 8.5.12 : la même séquence en deux phases reste opérationnelle (consumer-ok). L'exécution de code à distance en tant que worker Apache est déduite de l'avis GHSA.
| ID | CVE-2026-109619 |
| Avis | GHSA-6wmf-4rv5-p3rp |
| Classe | UAF / Crash (RCE déduite de l'avis) |
| Portée | Distante (HTTP non authentifié, même worker) |
| CWE | CWE-416 / CWE-825 |
| CVSS | Critique : 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (PHP Group) |
| Produit | PHP |
| Affecté | PHP 8.2 avant 8.2.35, 8.3 avant 8.3.36, 8.4 avant 8.4.27, 8.5 avant 8.5.12 (version du labo 8.5.11, la branche backtrace est 8.5) |
| Corrigé | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (21 oct. 2026) |
| Auth | aucune |
| Licence | GNU Affero GPL v3.0 |
| Labo | 127.0.0.1 uniquement |
Outils associés : CVE-2026-109618 OOM longjmp (paire PHP2Shell).
| Méthode | Point d'impact | Privilège |
|---|---|---|
GET /producer.php non authentifié puis GET /consumer.php sur le même processus enfant Apache prefork | fatal_error_backtraces de 8.5 jamais réinitialisé à l'arrêt ; diagnostic INI avant php_request_startup() | Disponibilité (prouvée en labo) : tuer ce processus enfant (zend_mm_heap corrupted, réinitialisation de connexion) sur 8.5.11. Intégrité (déduite) : pointeur de backtrace pendant ; le fournisseur a montré une RCE en tant que www-data. Reconnaissance (déduite) : divulgation du tas de requête résiduel. |
| Même séquence en deux phases sur 8.5.12 | réinitialisation complète de l'état | Fermé (prouvé en labo) : corps du consommateur consumer-ok, le worker reste opérationnel. |
error_reporting / display_errors / @ | l'avertissement consomme toujours l'état obsolète | Fermé comme mesure d'atténuation. L'état global est accédé avant que PHP ne décide s'il doit signaler le diagnostic. |
.user.ini du pool FPM | appliqué après l'initialisation normale | Fermé en tant que consommateur précoce. FPM nécessite PHP_VALUE / PHP_ADMIN_VALUE côté frontal. La progression d'upload de session est une seconde branche confirmée par le fournisseur (mod_php et FPM) ; ce labo a utilisé la branche backtrace de 8.5. |
Connexion, reverse shell, .so personnalisé | s.o. | Fermé. Aucune tentative de contrôle de RIP. |
Prouvé en labo vs déduit : l'UAF/crash sur le même worker vs le contrôle corrigé est prouvé en labo. La RCE est déduite de GHSA-6wmf-4rv5-p3rp.
Prérequis : Apache apache2handler prefork fixé à un seul worker. PHP 8.5 fatal_error_backtraces=On. Diagnostic INI par répertoire. php:8.5.11-apache officiel vs php:8.5.12-apache.
python3 php-stale-global-uaf-Abraxas-Labs.py
ou cd lab && ./run.sh. Boucle locale 127.0.0.1:18222 (8.5.11) vs 127.0.0.1:18223 (8.5.12). Projet Compose cve-2026-109619. Témoin CVE-2026-109619-UAF-WITNESS. Dernière ligne :
SUCCESS CVE-2026-109619 vuln-uaf=yes vuln-crash=yes patched-ok=yes sapi=apache2handler pin=same-worker vuln-image=php:8.5.11-apache patched-image=php:8.5.12-apache how=backtrace crash=connection-reset CVE-2026-109619-UAF-WITNESS
Laboratoire autorisé uniquement. Il communique avec le loopback.
Mettez à jour vers PHP 8.5.12 (ou 8.2.35 / 8.3.36 / 8.4.27). En attendant : fatal_error_backtraces=0 sur 8.5 (ce producteur uniquement) ; session.upload_progress.enabled=0 (branche session uniquement) ; supprimez les INI obsolètes par requête ; pm.max_requests=1 si vous pouvez vous le permettre. Il n'existe pas d'atténuation générique complète par configuration.
Abraxas Labs [email protected]