
Bad Spin: Exploração de Escalação de Privilégio do Binder do Android (CVE-2022-20421)
Autor: Moshe Kol
Exploit de escalada de privilégios a partir de unstrusted_app para a vulnerabilidade do Binder Android (CVE-2022-20421). A vulnerabilidade foi corrigida no Boletim de Segurança do Android de outubro de 2022. O exploit funciona em dispositivos com versões de kernel 5.4.x e 5.10.x, e atinge primitivas completas de leitura/escrita (R/W) do kernel. Para o Google Pixel 6, também obtém root completo e desvio do SELinux.
Você pode encontrar o artigo completo aqui.
libbadspin.so digitando make push no diretório src/. Isso também enviará a biblioteca para /data/local/tmp.adb shell.LD_PRELOAD=/data/local/tmp/libbadspin.so sleep 1. Isso carregará a biblioteca e iniciará o exploit.libbadspin.so digitando make push no diretório src/. Isso copiará a biblioteca para o diretório assets do aplicativo Android de demonstração.app/. (Talvez você precise do Android Studio para fazer isso.)adb logcat -s BADSPINVocê pode passar as seguintes variáveis para make:
VERBOSE=1 para aumentar a verbosidade.TEST_VULN=1 para testar a vulnerabilidade sem prosseguir com o 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
Não é difícil adaptar o exploit e oferecer suporte a um novo dispositivo.
Certifique-se de que seu novo dispositivo está executando a versão de kernel 5.4.x ou 5.10.x, e que o nível de patch de segurança do Android seja anterior a outubro de 2022.
Adicione as propriedades do seu dispositivo em dev_config.h.
Especifique dois ponteiros de função:
kimg_to_lm(): Converte um ponteiro virtual da imagem do kernel para o mapeamento linear.find_kbase(): Encontra o endereço base do kernel a partir de um ponteiro vazado de anon_pipe_buf_ops.Você pode usar as funções já fornecidas para isso. (Se sua fabricante não for Samsung e você não tiver certeza, use as mesmas funções do Pixel 6.)
Compile e execute.
Se funcionar para você, por favor, envie um pull request.