
Auditoria de CVE-2026-109618 / CVE-2026-109619: envenenamento de sessão até execução de comandos reproduzido; pré-condição de OOM do BGCTX reproduzida; UAF de array de progresso alegado não reproduzido em builds padrão.
Auditoria das alegações do "php2shell", mais um PoC local funcional.
中文 · PHP 8.5.4 · apenas laboratório
MITRE:
CVE_RECORD_DNE· NVD: sem registro · php.net: apenas pré-anúncio. Este repositório audita as alegações técnicas; não confirma os identificadores.
| Pergunta | Resposta |
|---|---|
| Pode fornecer um shell? | ✅ localmente — com um sink unserialize() + um gadget __destruct |
| Isso é a própria CVE? | ⚠️ provavelmente não — a CVE parece ser os órfãos de contexto BG (nota 08) |
| É pré-autenticação? | ❌ o caminho pré-autenticação para em ARM / crash em nossos testes |
| O bundle vazado está correto? | ❌ o UAF de post_bytes_processed não se reproduz |
multipart POST ──► php_hash_environment() ← antes do RINIT
│
├─ serialize encode ──► OOM ──► BG(serialize) órfão (64 B)
└─ unserialize decode ──► OOM ──► BG(unserialize) órfão (8208 B)
│
▼
SAPI sobrevive? ── sim ──► próxima requisição reutiliza o contexto liberado
│ │
não ├─ Bug S: crash / vazamento
▼ └─ Bug U: classe RCE
apenas DoS
Bug separado usado pelo nosso PoC:
var_destroy() ──► libera chunks de back-ref ──► caminhada de dtor (sem serialize_lock)
└─ __destruct ──► unserialize interno ──► R:N lê chunk liberado
└─ closure falsa ──► zif_system(cmd)
php exploit/var_destroy_uaf_rce.php "id > /tmp/proof"
cat /tmp/proof # uid=... gid=...
Requer: PHP vulnerável (8.5.4 verificado) · unserialize() em dados do atacante · uma
classe __destruct · /proc/self/mem do Linux · offsets por build a partir de nm.
| Alegação | Resultado |
|---|---|
Bundle vazado: UAF de post_bytes_processed | ❌ não reproduzido (Z_TRY_ADDREF) |
Bug S — órfão de BG(serialize) | ⚠️ UAF 3/3 sob ASAN · arm reproduzido · sem RCE |
Bug U — órfão de BG(unserialize) | ⚠️ arm reproduzido · kill / system não reproduzidos |
| var_destroy UAF → RCE | ✅ funciona, 10/10, auto-localizável |
Envenenamento de sessão → include | ✅ reproduzido (técnica pré-existente) |
Incompatibilidade de handler → __destruct | ✅ reproduzido (requer uma classe gadget) |
| Offsets do binário de demonstração | ✅ correspondem a 8.5.4-0ubuntu1.3 (delta 0xbe3f0) |
| Caminho | O que é |
|---|---|
exploit/var_destroy_uaf_rce.php | PoC auto-localizável de UAF → RCE |
analysis/01-05 | tempo de vida · ablação · versões · bundle vazado · alcançabilidade |
analysis/06 | caminho BG(serialize) + comprovante ASAN |
analysis/07 | envenenamento de sessão → execução de comando |
analysis/08 | órfãos de contexto BG (pacote de re-up) |
analysis/09 | var_destroy UAF → RCE (offsets, auto-localizável) |
evidence/ | traces ASAN · logs de OOM · offsets de binário · execuções |
lab/ | scripts de build · gatilhos · matriz · ablação |
PROVENANCE.md | URLs de artefatos · datas · hashes |
Builds locais, laboratórios locais de Apache / php-fpm / Docker, e o pacote Ubuntu nomeado. O PoC executa como o usuário do processo PHP; a pré-condição do gadget é real.