
Exploit de root do kernel Linux 5.10 específico para o dispositivo Sharp AQUOS R7 (CVE-2026-43499), concedendo UID 0 temporário com SELinux permissivo e um daemon su.
Port específico para Linux 5.10 do GhostLock (CVE-2026-43499) para o Sharp
AQUOS R7. O alvo validado é o AQUOS R7 (Mineva, SGA202SH/A202SH)
executando Android 14 build 03.00.11, kernel
5.10.237-android12-9-00013-gd09ef2e980e0-ab13968955 (SM8450).
O alvo validado anterior, build 03.00.06 / kernel
5.10.218-android12-9-00041-g124993efd06e-ab12385094, está preservado na
tag git v1.0-030006.
Este é um port do aquos-r6-ghostlock
(AQUOS R6, kernel 5.4.61-qgki). Cada constante — tratamento de KASLR, a
janela de vazamento de selinux_state, offsets de task/cred, a região de
scratch zero-BSS — foi rederivada e validada contra o kernel do R7; a geometria
da stack do R6 serviu apenas como referência inicial.
Uma execução bem-sucedida fornece UID 0 com SELinux permissivo e inicia um pequeno
daemon de comando su. Isso não concede um conjunto completo de capacidades Linux e a
alteração não é persistente: um reboot restaura o estado original do kernel.
O clang do Android NDK com target aarch64-linux-android29 é necessário (testado
com NDK r30):
make build/ghostlock510 # ~3.4 MB static binary
make strip # optional; ~0.6 MB, same behaviour
Reprodutibilidade (calibração 03.00.11): este código-fonte, compilado com o toolchain
acima, é byte-idêntico (MD5 25fc1d5d0e92d36c56f00f983a49667d) ao
binário usado no teste 03.00.11 no dispositivo. O asset da release é a
forma llvm-strip-ed exatamente desse binário (598.672 bytes, SHA-256
5c413a80e9fcc41032412f4e0e5183bc723dde9a2e0ace5a6d9c79681b04b9cd).
Para a build 03.00.06, consulte a tag v1.0-030006 (MD5 não stripado
fa896ebd361519766b46cc2bab70dea2).
Envie o binário (asset da release ou a sua própria build) e execute-o uma vez:
adb push ghostlock510 /data/local/tmp/ghostlock510
adb shell chmod 755 /data/local/tmp/ghostlock510
adb shell "setsid nohup /data/local/tmp/ghostlock510 --use-setattr --stamp3 --perm-pc --cred-swap --install-su --stamp-off 0xf0 --log /data/local/tmp/ghostlock510.log </dev/null >/dev/null 2>&1 &"
Use o cliente su instalado para comandos root (caminho completo obrigatório):
adb shell "/data/local/tmp/su -c 'id; getenforce'"
# uid=0(root) gid=2000(shell) groups=2000(shell) context=u:r:kernel:s0
# Permissive
su comunica com o daemon do exploit via TCP em loopback (porta 9999); nenhum
shell root persistente é anexado. Os comandos são baseados em linhas, e aninhar su
dentro de su não funciona. Programas interativos (vi, top, …) exigem um PTY; um
modo su interativo sobre o daemon fica como trabalho futuro.
Medido nesta build exata (ver VERIFICATION.md):
Portanto: reinicie, execute ghostlock510 uma vez, e não o execute novamente enquanto essa
sessão estiver ativa. O reboot é o caminho de limpeza.
Grandes entradas externas são deliberadamente não incluídas neste repositório:
vmlinux/System.map da build de kernel do Android CI 13968955; a identidade
byte a byte com o kernel realmente em execução no dispositivo foi verificada via
sua imagem boot_b (todos os 23 segmentos PT_LOAD, comparação por segmento).
A correção da CVE (backport 5.10.y de 2026-07-21) é posterior a esta árvore
(HEAD 2025-08-20), e kernel/futex/core.c é idêntico em blob à
build 03.00.06 — a vulnerabilidade ainda está presente.v1.0-030006): os offsets vieram da build de kernel do Android CI
12385094, verificada byte a byte via a imagem boot_a do dispositivo.--stamp3 / --use-setattr
foi inspirada nele (nenhuma licença declarada naquele repositório).