
PHP 8.5.11 - Critica - Remota - UAF - CVE-2026-109619 PHP2Shell. Backtrace fatale nello stesso worker e poi diagnostica INI su Apache mod_php. Lab vs 8.5.12. RCE dedotta dall'advisory.
Chiunque su internet può comunicare con il tuo sito PHP allo stesso modo di un browser, senza password. Sull'ultima versione PHP 8.5 interessata, è possibile forzare una richiesta a terminare con un errore fatale, quindi inviare una seconda richiesta allo stesso worker. PHP 8.5 conserva un backtrace di quell'errore fatale nella memoria globale del worker dopo che l'heap della richiesta è stato liberato. La seconda richiesta lo legge mentre applica un flag INI residuo, prima che il motore si sia ripristinato. In questo laboratorio quella seconda richiesta uccide il processo figlio di Apache. Il PHP Group ha dimostrato che lo stesso schema può trasformarsi in esecuzione di codice remoto con i privilegi del worker web.
Classe: UAF / Crash Portata: Remota
PHP 8.5.11 (php:8.5.11-apache) vs 8.5.12 con patch - php.net
CVE-2026-109619 riguarda uno stato globale del worker obsoleto. Il laboratorio fissa Apache prefork a un solo processo figlio, genera un errore fatale con fatal_error_backtraces=On, quindi lo consuma con php_flag auto_detect_line_endings on / report_memleaks off per-directory applicati prima di php_request_startup(). 8.5.11: il producer restituisce 200 con errore fatale, il consumer subisce la connessione resettata, il log di Apache mostra zend_mm_heap corrupted. 8.5.12: la stessa sequenza in due fasi resta attiva (consumer-ok). L'esecuzione di codice remoto con i privilegi del worker Apache è dedotta dal GHSA.
| ID | CVE-2026-109619 |
| Advisory | GHSA-6wmf-4rv5-p3rp |
| Classe | UAF / Crash (RCE dedotta dall'advisory) |
| Portata | Remota (HTTP non autenticato, stesso worker) |
| CWE | CWE-416 / CWE-825 |
| CVSS | Critico: 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (PHP Group) |
| Prodotto | PHP |
| Interessate | PHP 8.2 precedente alla 8.2.35, 8.3 precedente alla 8.3.36, 8.4 precedente alla 8.4.27, 8.5 precedente alla 8.5.12 (laboratorio fissato a 8.5.11, il ramo backtrace è 8.5) |
| Corrette | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (21 ott 2026) |
| Autenticazione | nessuna |
| Licenza | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Correlata: CVE-2026-109618 OOM longjmp (coppia PHP2Shell).
| Metodo | Sink | Privilegio |
|---|---|---|
GET /producer.php non autenticato seguito da GET /consumer.php sullo stesso processo figlio Apache prefork | fatal_error_backtraces di 8.5 mai reimpostato allo shutdown; diagnostica INI prima di php_request_startup() | Disponibilità (dimostrata in laboratorio): uccide quel processo figlio (zend_mm_heap corrupted, connessione resettata) su 8.5.11. Integrità (dedotta): puntatore backtrace pendente; il vendor ha dimostrato RCE come www-data. Ricognizione (dedotta): divulgazione dell'heap della richiesta residuo. |
| Stessa sequenza in due fasi su 8.5.12 | reset completo dello stato | Chiusa (dimostrata in laboratorio): corpo del consumer consumer-ok, il worker resta attivo. |
error_reporting / display_errors / @ | l'avviso consuma comunque lo stato obsoleto | Chiusa come mitigazione. Lo stato globale viene acceduto prima che PHP decida se segnalare la diagnostica. |
.user.ini del pool FPM | applicato dopo l'inizializzazione normale | Chiusa come consumer anticipato. FPM richiede PHP_VALUE / PHP_ADMIN_VALUE dal frontend. Il progresso dell'upload di sessione è un secondo ramo confermato dal vendor (mod_php e FPM); questo laboratorio ha usato il ramo backtrace di 8.5. |
Login, reverse shell, .so personalizzato | n/d | Chiusa. Nessun tentativo di controllo del RIP. |
Dimostrato in laboratorio vs dedotto: la UAF/crash sullo stesso worker rispetto al controllo con patch è dimostrata in laboratorio. La RCE è dedotta da GHSA-6wmf-4rv5-p3rp.
Requisiti: Apache apache2handler prefork fissato a un solo worker. PHP 8.5 fatal_error_backtraces=On. Diagnostica INI per-directory. php:8.5.11-apache ufficiale vs php:8.5.12-apache.
python3 php-stale-global-uaf-Abraxas-Labs.py
oppure cd lab && ./run.sh. Loopback 127.0.0.1:18222 (8.5.11) vs 127.0.0.1:18223 (8.5.12). Progetto Compose cve-2026-109619. Witness CVE-2026-109619-UAF-WITNESS. Ultima riga:
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
Solo laboratorio autorizzato. Comunica con il loopback.
Aggiorna a PHP 8.5.12 (o 8.2.35 / 8.3.36 / 8.4.27). Fino ad allora: fatal_error_backtraces=0 su 8.5 (solo per questo producer); session.upload_progress.enabled=0 (solo per il ramo session); rimuovi l'INI deprecato per richiesta; pm.max_requests=1 se puoi permettertelo. Non esiste una mitigazione completa tramite configurazione generica.
Abraxas Labs [email protected]