
Pesquisa sobre DirtyFrag CVE-2026-43284 para dispositivos 5.4-qgki
Data: 2026-10-07/08 Dispositivos: Redmi Note 11 Pro 5G (veux, 5.4.274-qgki) & POCO X5 5G (moonstone, 5.4.191-qgki) SoC: Snapdragon 695 (SM6375)
| CVE | Status | Notas |
|---|---|---|
| CVE-2026-43284 (DirtyFrag) | ❌ Inviável | Requer MSG_SPLICE_PAGES (kernel 6.5+) |
| CVE-2026-24088 (Qualcomm fastboot) | ⚠️ Específico do bootloader | TheFliss: "unknown command" no dispositivo dele |
| CVE-2022-2602 (io_uring UAF) | ❌ Inviável | Kernel bloqueia o caminho de registro (EFAULT/EINVAL) |
| CVE-2022-20421 (BadSpin) | ❌ Testado, sem sucesso | Compila OK, entra em loop sem vencer a corrida |
| CVE-2023-20938 (binder UAF) | ✅ Vulnerável (ambos) | Ainda não testado |
| CVE-2023-4622 (af_unix UAF) | ✅ Vulnerável (ambos) | Ainda não testado |
| CVE-2026-43499 (GhostLock) | ❓ Possivelmente vulnerável | O app GhostLock não funciona no 5.4 por design |
| CVEs do KGSL (5x) | ❓ Possivelmente vulnerável | 2024-38399 tem writeup+PoC |
Veredito: Não é viável no 5.4.
O bug existe no 5.4 (código do 4.11), mas o exploit requer suporte a MSG_SPLICE_PAGES
em UDP para a primitiva de escrita em page-cache. Isso foi introduzido no kernel 6.5.
No 5.4, splice() para UDP faz uma cópia comum — sem anexação de página compartilhada.
CVE-2026-43500 (variante RxRPC) também não se aplica — código RxRPC introduzido no 6.8.
Repo: https://github.com/HirokiAkihiko/dirtyfrag-research
Veredito: Específico do bootloader, não universal.
Bug no ABL da Qualcomm: fastboot oem set-gpu-preemption não sanitiza os argumentos,
permitindo a injeção de androidboot.selinux=permissive na cmdline do kernel.
Resultado do teste (TheFliss): FAILED (remote: 'unknown command') — o bootloader dele
não implementa o comando. Este CVE depende da build específica do ABL.
Veredito: Inviável nestes dispositivos. O kernel bloqueia ativamente o caminho de registro.
Trabalho realizado:
Descobertas:
CONFIG_IO_URING=y confirmadoio_uring_setup funciona com flags simples (SQPOLL bloqueado → requer CAP_SYS_ADMIN)IORING_REGISTER_FILES → EFAULT (consistente, mesmo via SVC bruto)IORING_REGISTER_BUFFERS → EINVALA primitiva UAF requer IORING_REGISTER_FILES bem-sucedido. Sem isso,
a cadeia de exploit não pode prosseguir.
Pacote: ~/workspace/cve-2022-2602-bundle/ (código-fonte, binários, diagnósticos)
Veredito: Compila e executa, mas não obtém sucesso no veux.
Trabalho realizado:
mateusvdcastro/badspinexploit.c (find_dev_config())dev_config.h (modelo 2201116SG, Android 13, kernel 5.4.274, SPL 2024-12)libbadspin.so (345K, ARM64)TEST_VULN=1Resultado do teste: dev_config_init falhou inicialmente (incompatibilidade de mês do SPL: a entrada tinha
month=1, o dispositivo tem 2024-12). Corrigido via GitHub. Após a correção, o exploit executa e
dispara a vulnerabilidade ("Trigger use-after-free"), mas entra em loop indefinidamente
sem vencer a condição de corrida.
Repo: https://github.com/HirokiAkihiko/badspin-veux (privado)
bdc1c5fac982 e 4df153652cc4 ausentes no código-fonte da Xiaomi4821df2ffe38 ausente; skb_peek_tail ainda sem lockcurrent->pi_blocked_on = NULL presente)Rótulos de versão são enganosos. O veux-r-oss está rotulado como 5.4.274, mas está faltando backports estáveis do 5.4.y que deveriam estar lá (correções do binder de 2023-06, correção do af_unix de 2023-08). Sempre verifique no nível do código, não pelo número da versão.
~/workspace/cve-2022-2602-bundle/~/workspace/cve-hunt/