
Bad Spin: Exploit de escalada de privilegios de Binder de Android (CVE-2022-20421)
Autor: Moshe Kol
Exploit de escalada de privilegios desde unstrusted_app para la vulnerabilidad de Android Binder (CVE-2022-20421). La vulnerabilidad fue parcheada en el Boletín de Seguridad de Android de octubre de 2022. El exploit funciona en dispositivos que ejecutan versiones de kernel 5.4.x y 5.10.x, y logra primitivas completas de R/W del kernel. Para el Google Pixel 6, también obtiene root completo y omisión de SELinux.
Puede encontrar el artículo completo aquí.
libbadspin.so escribiendo make push en el directorio src/. Esto también enviará la biblioteca a /data/local/tmp.adb shell.LD_PRELOAD=/data/local/tmp/libbadspin.so sleep 1. Esto cargará la biblioteca e iniciará el exploit.libbadspin.so escribiendo make push en el directorio src/. Esto copiará la biblioteca al directorio assets para la aplicación demo de Android.app/. (Puede necesitar Android Studio para hacer esto).adb logcat -s BADSPINPuede pasar las siguientes variables a make:
VERBOSE=1 para aumentar la verbosidad.TEST_VULN=1 para probar la vulnerabilidad sin proceder con el exploit.$ make list
0: Samsung Galaxy S22, Android 12 (6/2022), kernel 5.10.81
1: Samsung Galaxy S21 Ultra, Android 12 (3/2022), kernel 5.4.129
2: Google Pixel 6, Android 12 (5/2022), kernel 5.10.66
3: Google Pixel 6, Android 13 (9/2022), kernel 5.10.107
No es difícil adaptar el exploit y soportar un nuevo dispositivo.
Asegúrese de que su nuevo dispositivo ejecute la versión de kernel 5.4.x o 5.10.x, y que su nivel de parche de seguridad de Android sea anterior a octubre de 2022.
Agregue las propiedades de su dispositivo a dev_config.h.
Especifique dos punteros de función:
kimg_to_lm(): Convierte un puntero virtual de imagen de kernel al mapeo lineal.find_kbase(): Encuentra la dirección base del kernel a partir de un puntero filtrado de anon_pipe_buf_ops.Puede usar las funciones ya proporcionadas para esto. (Si su proveedor no es Samsung y no está seguro, use las mismas funciones que para el Pixel 6).
Compile y ejecute.
Si le funciona, por favor envíe un pull request.