
Adaptação do CVE-2023-6241 para o Google Pixel 7 a partir do Google Pixel 8 retirado de securitylab/SecurityExploits/Android/Mali/CVE_2023_6241
Este repositório ilustrará como adaptar o exploit publicado pela securitylab em seu repositório GitHub que funciona para Google Pixel 8 para um Google Pixel 7.
Antes de iniciar a modificação do exploit, foi feita a suposição de que o exploit original também funcionava para dispositivos Google Pixel 7 (após os patches necessários) com base no artigo associado ao CVE-2023-6241. Isso foi necessário pois os dois dispositivos parecem diferentes (em termos de hardware) (comparação).
Aqui estão as ferramentas usadas para realizar análise e extrair informações ou arquivos.
A seguir está como o objetivo foi alcançado começando do início.
Ative as opções de desenvolvedor no dispositivo.
Faça o flash do dispositivo com o patch de segurança correto (neste caso, um entre UP1A.231105.003, Nov 2023 e UQ1A.240205.002, Fev 2024, ambos incluídos), de preferência usando o Google Chrome e Android flash tool clicando em "Flash" na entrada desejada na página Factory Images for Nexus and Pixel Devices.
Nota 1: usar o Android flash tool para fazer flash dos dispositivos pode ajudar a resolver problemas relacionados à versão do bootloader. Esses problemas podem aparecer durante uma operação de flash usando o script fornecido com o arquivo compactado baixado clicando em "Link" dentro da página Factory Images for Nexus and Pixel Devices.
Nota 2: antes de fazer flash no dispositivo, no Android flash tool marque "Force Flash all partition" para obter o mesmo resultado do script.
Baixe a imagem Android desejada clicando em "Link" e extraia o arquivo boot.img do arquivo compactado "image-panther.zip" dentro do arquivo compactado principal "panther-<release>-factory-<primeiros 8 caracteres do SHA-256>.zip"
Execute ./imjtool.ELF64 boot.img extract. A nova pasta "extracted" será criada com dois arquivos dentro. 
Execute vmlinux-to-elf ./extracted/kernel.decompressed <filename>.elf (para referência futura, <filename>.elf será Pixel7-kernel.elf). Um novo arquivo com o nome fornecido será criado.
Mais informações podem ser obtidas no artigo do GitHub e no repositório do GitHub mencionados no início.

Abra "Pixel7-kernel.elf" com Ghidra. Não é necessário realizar a análise automática, pois leva muito tempo e as informações ainda podem ser extraídas
Abra a janela "Symbol table" e procure pelos campos de interesse (neste caso avc_den|sel_read_enforce$|init_cred|^commit_creds$). O resultado deve ser algo assim: 
Vá para o endereço da localização e obtenha o "Imagebase Offset" para todos os campos pesquisados.

Defina todos os offsets no exploit de acordo com o que foi encontrado.

Calcule o valor de ADD_COMMIT_2311 e ADD_INIT_2311 encontrando o valor HEX da seguinte operação respectivamente add x8, x8, #0xXXX e add x0, x0, #0xYYY usando Online Assembler and Disassembler. Para encontrar os valores de XXX e YYY, basta copiar os 12 bits mais baixos respectivamente de COMMIT_CREDS_2311 e ADD_INIT_2311 (ex: se ADD_COMMIT_2311 for 0x17f0c8, então o código HEX de add x8, x8, #0x0c8 é 0x91032108).
Note que os valores são expressos em big-endian, portanto os bytes resultantes precisam ser invertidos.
Copie o GLES_mali.so de /vendor/lib64/egl/libGLES_mali.so (ou seja, adb pull /vendor/lib64/egl/libGLES_mali.so) e compile tudo com /home/gobbo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android34-clang -g -DSHELL -DCL_TARGET_OPENCL_VERSION=300 -I. -L. mali_jit_csf.c mem_read_write.c mempool_utils.c -lGLES_mali -o mali_jit_csf.
Nota: apenas para consistência temporal, a versão da biblioteca OpenCL usada no exploit foi a mais recente disponível antes do patch de segurança que corrigiu a vulnerabilidade (ou seja, versão 2023.04.17)
Faça upload e execute o exploit
adb push ./mali_jit_csf /data/local/tmp
export LD_LIBRARY_PATH=/vendor/lib64/egl
./data/local/tmp/mali_jit_csf