
Exploit et rapport pour application installée menant à une escalade de privilèges root via CVE-2024-48336 (Bug Magisk #8279), Vulnérabilité d'escalade de privilèges / exécution de code arbitraire
Ceci est un exploit pour une vulnérabilité CVE-2024-48336 dans l'application Magisk qui permet à une application locale d'obtenir silencieusement un accès root sans consentement utilisateur.
La vulnérabilité a été initialement signalée par @vvb2060 et démontrée (PoC) par @canyie. Elle a été corrigée dans Canary 27007.
Vidéo de démonstration pour exploiter cette vulnérabilité afin d'obtenir silencieusement les privilèges root et d'accorder root à n'importe quelle application : https://github.com/canyie/MagiskEoP/blob/main/screen-20220302-093745.mp4
Étapes pour reproduire cette vulnérabilité :
Nom : Vulnérabilité d'exécution de code arbitraire dans l'application Magisk
Alias : Vulnérabilité d'élévation de privilèges Magisk
Produit : Magisk
CVE : CVE-2024-48336
Rapporteur : @vvb2060
Date du rapport initial : 2024-08-01
Date du correctif : 2024-08-21
Date de divulgation : 2024-08-24
Versions affectées : Manager v7.0.0 ~ Canary 27006
Premières versions corrigées : Canary 27007
Rapport de problème/bogue : https://github.com/topjohnwu/Magisk/issues/8279
CL du correctif : https://github.com/topjohnwu/Magisk/commit/c2eb6039579b8a2fb1e11a753cea7662c07bec02
CL ayant introduit le bogue : https://github.com/topjohnwu/Magisk/commit/920b60da19212dd8d54d27ada77a30067ce50de6
Classe de bogue : Chargement dynamique externe de code non sécurisé
Énumérations des faiblesses :
La fonction install() de ProviderInstaller.java dans l'application Magisk avant la version canary 27007 ne vérifie pas l'application GMS avant de la charger, ce qui permet à une application locale non fiable sans privilèges supplémentaires d'exécuter silencieusement du code arbitraire dans l'application Magisk et d'élever les privilèges en root via un paquetage contrefait, alias Bogue #8279. Aucune interaction utilisateur n'est nécessaire pour l'exploitation.
Les anciennes versions d'Android ne prennent pas en charge certains algorithmes. Pour que Magisk fonctionne correctement sur ces plateformes, il tente de charger conscrypt depuis GMS en appelant createCallingContext(). Consultez ce lien pour plus de détails : https://t.me/vvb2060Channel/692
Cependant, GMS n'est pas toujours préinstallé sur tous les appareils. Magisk suppose que le chargement de code depuis GMS est toujours sûr, mais les attaquants peuvent créer une application malveillante factice avec le même nom de paquet. Lorsque l'application Magisk est lancée, le code malveillant sera exécuté dans l'application Magisk. Étant donné que l'application Magisk obtient toujours l'accès root, cela permet aux attaquants d'obtenir silencieusement un accès root et d'exécuter du code arbitraire avec les privilèges root sans acceptation de l'utilisateur.
Remarque : Ce problème est corrigé dans Canary 27007 en s'assurant que GMS est une application système avant de la charger. Cependant, il est toujours possible d'exploiter ce problème sur des appareils avec GMS préinstallé mais avec des implémentations de vérification de signature défectueuses (par exemple CorePatch).
Remarque 2 : Bien qu'un correctif pour ce problème soit présent dans l'application Magisk officielle, il existe de nombreuses autres instances de code similaire dans d'autres applications sans correctif approprié, comme ceci et ceci. Cela permet potentiellement une exécution de code arbitraire dans les applications vulnérables et permet potentiellement aux attaquants d'obtenir à nouveau un accès root si celui-ci est accordé aux applications victimes.