
Exploit de root del kernel Linux 5.10 específico para el dispositivo Sharp AQUOS R7 (CVE-2026-43499), que otorga UID 0 temporal con SELinux en modo permisivo y un daemon su.
Port específico del dispositivo de GhostLock (CVE-2026-43499) a Linux 5.10 para el Sharp
AQUOS R7. El objetivo validado es el AQUOS R7 (Mineva, SGA202SH/A202SH)
con Android 14 build 03.00.06, kernel
5.10.218-android12-9-00041-g124993efd06e-ab12385094 (SM8450).
Este es un port de aquos-r6-ghostlock
(AQUOS R6, kernel 5.4.61-qgki). Cada constante — el manejo de KASLR, la
ventana de fuga de selinux_state, los offsets de task/cred, la región scratch
zero-BSS — fue re-derivada y validada contra el kernel del R7; la geometría de pila
del R6 sirvió solo como referencia inicial.
Una ejecución exitosa te da UID 0 con SELinux en modo permisivo e inicia un pequeño
daemon de comandos su. No otorga un conjunto completo de capacidades de Linux y el
cambio no es persistente: un reinicio restaura el estado del kernel original.
Se requiere el clang del Android NDK apuntando a aarch64-linux-android29 (probado
con NDK r30):
make build/ghostlock510 # ~3.4 MB static binary
make strip # optional; ~0.6 MB, same behaviour
Reproducibilidad: este código fuente, compilado con el toolchain anterior, es byte-idéntico
(MD5 fa896ebd361519766b46cc2bab70dea2) al binario usado en todas las
pruebas en el dispositivo. El asset de release es la forma llvm-strip-eada de exactamente ese binario
(598,672 bytes, SHA-256 d3056b65380da9fda68bc1891a08c6028ee1cbdb39ff2c3ca136b703f1b0bef7).
Sube el binario (asset de release o tu propia compilación) y ejecútalo una 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 &"
Usa el cliente su instalado para comandos de root (se requiere la ruta completa):
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 se comunica con el daemon del exploit a través de TCP en loopback (puerto 9999); no
se adjunta una shell de root persistente. Los comandos están basados en líneas, y anidar su
dentro de su no funciona. Los programas interactivos (vi, top, …) requieren un PTY; un
modo su interactivo sobre el daemon queda como trabajo futuro.
Medido en esta compilación exacta (ver VERIFICATION.md):
Así que: reinicia, ejecuta ghostlock510 una vez, y no lo ejecutes de nuevo mientras esa
sesión siga viva. El reinicio es la vía de limpieza.
Las entradas externas grandes se omiten deliberadamente en este repositorio:
vmlinux/System.map de la
compilación de kernel de Android CI 12385094; la identidad a nivel de byte con el kernel
realmente en ejecución en el dispositivo se verificó a través de su imagen boot_a.--stamp3 / --use-setattr
se inspiró en él (no se indica licencia en ese repositorio).