
Exploit e writeup per la escalation dei privilegi a root di un'app installata tramite CVE-2024-48336 (Magisk Bug #8279), vulnerabilità di escalation dei privilegi / esecuzione arbitraria di codice
Questa è un exploit per una vulnerabilità CVE-2024-48336 nell'app Magisk che consente a un'app locale di ottenere silenziosamente l'accesso root senza il consenso dell'utente.
La vulnerabilità è stata inizialmente segnalata da @vvb2060 e ne è stato dimostrato il funzionamento (PoC) da @canyie. È stata corretta in Canary 27007.
Video dimostrativo dell'exploit che sfrutta questa vulnerabilità per ottenere silenziosamente privilegi di root e concedere root a qualsiasi app: https://github.com/canyie/MagiskEoP/blob/main/screen-20220302-093745.mp4
Passaggi per riprodurre questa vulnerabilità:
Nome: Vulnerabilità di esecuzione di codice arbitrario nell'app Magisk
Alias: Vulnerabilità di escalation dei privilegi di Magisk
Prodotto: Magisk
CVE: CVE-2024-48336
Segnalatore: @vvb2060
Data della segnalazione iniziale: 2024-08-01
Data della patch: 2024-08-21
Data della divulgazione: 2024-08-24
Versioni interessate: Manager v7.0.0 ~ Canary 27006
Prima versione corretta: Canary 27007
Segnalazione del problema/bug: https://github.com/topjohnwu/Magisk/issues/8279
Patch CL: https://github.com/topjohnwu/Magisk/commit/c2eb6039579b8a2fb1e11a753cea7662c07bec02
CL che ha introdotto il bug: https://github.com/topjohnwu/Magisk/commit/920b60da19212dd8d54d27ada77a30067ce50de6
Classe di bug: Caricamento non sicuro di codice esterno dinamico
Enumerazioni delle debolezze:
La funzione install() di ProviderInstaller.java nell'app Magisk antecedente alla versione canary 27007 non verifica l'app GMS prima di caricarla, il che consente a un'app locale non attendibile senza privilegi aggiuntivi di eseguire silenziosamente codice arbitrario nell'app Magisk e di elevare i privilegi a root tramite un pacchetto appositamente predisposto, noto anche come Bug #8279. Per lo sfruttamento non è necessaria alcuna interazione con l'utente.
Le vecchie versioni di Android non supportano alcuni algoritmi. Per far funzionare correttamente Magisk su queste piattaforme, si tenta di caricare conscrypt da GMS chiamando createCallingContext(). Consultare questo link per maggiori dettagli: https://t.me/vvb2060Channel/692
Tuttavia, GMS non è sempre preinstallato su tutti i dispositivi. Magisk presume che caricare codice da GMS sia sempre sicuro, ma gli attaccanti possono creare una falsa app dannosa con lo stesso nome del pacchetto. Quando viene avviata l'app Magisk, il codice dannoso viene eseguito nell'app Magisk. Poiché all'app Magisk è sempre concesso l'accesso root, questo consente agli attaccanti di ottenere silenziosamente l'accesso root ed eseguire codice arbitrario con privilegi di root senza l'accettazione dell'utente.
Nota: questo problema è stato corretto in Canary 27007 assicurando che GMS sia un'app di sistema prima di caricarla. Tuttavia, è ancora possibile sfruttare questo problema su dispositivi con GMS preinstallato ma con implementazioni della verifica delle firme non funzionanti (ad es. CorePatch).
Nota 2: sebbene una correzione per questo problema sia presente nell'app Magisk ufficiale, esistono molte altre istanze di codice simile in altre app senza una correzione adeguata, come questa e questa. Ciò potenzialmente consente l'esecuzione di codice arbitrario nelle app vulnerabili e potrebbe consentire agli attaccanti di ottenere nuovamente l'accesso root se questo è concesso alle app vittima.