
Audit CVE-2026-109618 / CVE-2026-109619: riprodotto l'avvelenamento della sessione fino all'esecuzione di comandi; riprodotta la precondizione OOM di BGCTX; la presunta UAF dell'array di avanzamento non è stata riprodotta sulle build standard.
Verifica delle affermazioni su "php2shell", più un PoC locale funzionante.
中文 · PHP 8.5.4 · solo laboratorio
MITRE:
CVE_RECORD_DNE· NVD: nessun record · php.net: solo pre-annuncio. Questo repository verifica le affermazioni tecniche; non conferma gli identificatori.
| Domanda | Risposta |
|---|---|
| Può fornire una shell? | ✅ localmente — con un sink unserialize() + un gadget __destruct |
| È quello il CVE stesso? | ⚠️ probabilmente no — il CVE sembra riguardare gli orfani del contesto BG (nota 08) |
| È pre-auth? | ❌ il percorso pre-auth si ferma ad ARM / crash nei nostri test |
| Il bundle trapelato è corretto? | ❌ la UAF post_bytes_processed non si riproduce |
multipart POST ──► php_hash_environment() ← before RINIT
│
├─ serialize encode ──► OOM ──► BG(serialize) orphaned (64 B)
└─ unserialize decode ──► OOM ──► BG(unserialize) orphaned (8208 B)
│
▼
SAPI survives? ── yes ──► next request reuses the freed context
│ │
no ├─ Bug S: crash / leak
▼ └─ Bug U: RCE class
DoS only
Bug separato usato dal nostro PoC:
var_destroy() ──► frees back-ref chunks ──► dtor walk (no serialize_lock)
└─ __destruct ──► inner unserialize ──► R:N reads freed chunk
└─ fake closure ──► zif_system(cmd)
php exploit/var_destroy_uaf_rce.php "id > /tmp/proof"
cat /tmp/proof # uid=... gid=...
Requisiti: PHP vulnerabile (8.5.4 verificato) · unserialize() su dati controllati dall'attaccante · una
classe __destruct · /proc/self/mem di Linux · offset specifici della build da nm.
| Affermazione | Risultato |
|---|---|
Bundle trapelato: UAF post_bytes_processed | ❌ non riprodotta (Z_TRY_ADDREF) |
Bug S — orfano BG(serialize) | ⚠️ UAF 3/3 sotto ASAN · arm riprodotto · nessuna RCE |
Bug U — orfano BG(unserialize) | ⚠️ arm riprodotto · kill / system non riprodotti |
| var_destroy UAF → RCE | ✅ funziona, 10/10, auto-localizzante |
Avvelenamento della sessione → include | ✅ riprodotto (tecnica preesistente) |
Disallineamento dell'handler → __destruct | ✅ riprodotto (richiede una classe gadget) |
| Offset del binario demo | ✅ corrispondono a 8.5.4-0ubuntu1.3 (delta 0xbe3f0) |
| Percorso | Contenuto |
|---|---|
exploit/var_destroy_uaf_rce.php | PoC auto-localizzante UAF → RCE |
analysis/01-05 | ciclo di vita · ablazione · versioni · bundle trapelato · raggiungibilità |
analysis/06 | percorso BG(serialize) + ricevuta ASAN |
analysis/07 | avvelenamento della sessione → esecuzione di comandi |
analysis/08 | orfani del contesto BG (pacchetto re-up) |
analysis/09 | var_destroy UAF → RCE (offset, auto-localizzante) |
evidence/ | tracce ASAN · log OOM · offset del binario · esecuzioni |
lab/ | script di build · trigger · matrice · ablazione |
PROVENANCE.md | URL degli artefatti · date · hash |
Build locali, laboratori locali Apache / php-fpm / Docker e il pacchetto Ubuntu indicato. Il PoC viene eseguito come utente del processo PHP; la precondizione del gadget è reale.