
PoC per CVE-2024-23700, escalation silenziosa dei privilegi su Android che consente di leggere/scrivere contatti, SMS, calendario, registro delle chiamate e segreteria telefonica, effettuare chiamate in uscita o rispondere a chiamate in entrata, manipolare le impostazioni delle chiamate, accedere e controllare le notifiche inviate da altre app, controllare i dispositivi nelle vicinanze, registrare audio, accedere agli identificatori del dispositivo e bypassare le restrizioni in background.
Progetto che illustra CVE-2024-23700, una vulnerabilità di escalation dei privilegi relativa al meccanismo Companion Device su Android. Il PoC mostra come un'app possa sfruttare il flusso di associazione del dispositivo companion per ottenere alcune autorizzazioni sensibili senza passare attraverso la normale interazione di concessione dei permessi in ambienti vulnerabili.
I documenti e il codice sorgente in questo repository hanno esclusivamente scopi didattici, di analisi della sicurezza e di test in ambienti autorizzati. Non utilizzare su dispositivi, account o dati non rientranti in un ambito di test legale.
Progetto per il corso: Sicurezza sui dispositivi mobili
Gruppo di lavoro: Progetto realizzato da un gruppo di 4 membri.
| N. | Nome e cognome | Codice studente |
|---|---|---|
| 1 | Đặng Quang Vinh | D54.B10.AT.024 |
| 2 | Nguyễn Khắc Hoàng Anh | D54.B10.AT.05 |
| 3 | Trần Văn Tiến | D54.B10.AT.020 |
| 4 | Nguyễn Xuân Tùng | D54.B10.AT.023 |
Durante la ricerca e il completamento di questo progetto, il gruppo ha svolto le seguenti attività:
Il progetto implementa un'app Android che si finge una semplice applicazione per appunti (My Notes). All'avvio, l'app chiama CompanionDeviceManager.associate() con un profilo di dispositivo companion per simulare il processo di acquisizione dei privilegi tramite CVE-2024-23700. Se il dispositivo o la ROM soddisfano le condizioni di vulnerabilità, l'app può ottenere ulteriori autorizzazioni sensibili e accedere a dati come contatti, SMS, registro chiamate, calendario, notifiche e alcune informazioni del dispositivo.
Il flusso operativo principale del PoC:
CompanionAssociationActivity simula la risposta di approvazione dell'associazione del dispositivo.Codice vulnerabilità: CVE-2024-23700
Livello di gravità Android: Critico
Componente interessato: Android Companion Device Manager
Patch di riferimento: Android Wear Security Bulletin 2024-05-01
Commit di correzione di riferimento: Patch AOSP frameworks/base
Secondo il README originale del PoC, la maggior parte dei dispositivi Android standard non è vulnerabile, tranne alcuni casi come:
com.android.companiondevicemanager.Se l'APK del PoC non può essere installato sul dispositivo, potrebbe essere un segno che il dispositivo non soddisfa le condizioni di vulnerabilità per questa vulnerabilità.
CVE-2024-23700/
├── app/
│ ├── build.gradle - Configurazione del modulo applicativo Android
│ ├── proguard-rules.pro - Regole ProGuard per il modulo app
│ └── src/main/
│ ├── AndroidManifest.xml - Dichiarazione di permessi, activity e notification listener
│ ├── java/
│ │ ├── com/android/companiondevicemanager/
│ │ │ └── CompanionAssociationActivity.java - Activity che gestisce il flusso di associazione
│ │ └── com/vsoft/mynotes/
│ │ ├── MainActivity.java - Logica principale dell'app PoC
│ │ └── NotificationListener.java - Servizio di ascolto delle notifiche
│ └── res/
│ ├── drawable/ - Risorse drawable dell'app
│ ├── drawable-v24/ - Risorse drawable per API 24+
│ ├── layout/main.xml - Interfaccia dell'app per appunti
│ ├── mipmap-*/ - Icone dell'app per ogni densità di schermo
│ └── values/ - Stringhe e tema dell'app
├── gradle/wrapper/ - JAR del wrapper Gradle e configurazione del wrapper
├── .gitignore - Regole per escludere file locali, output di build, log e script ausiliari
├── build.gradle - Configurazione Gradle a livello di progetto
├── gradle.properties - Impostazioni Gradle del progetto
├── gradlew - Script per eseguire Gradle su Linux/macOS
├── gradlew.bat - Script per eseguire Gradle su Windows
├── settings.gradle - Dichiarazione del progetto e dei moduli
└── README.md
Il manifest dell'app dichiara diversi gruppi di autorizzazioni per verificare l'impatto della vulnerabilità in ambienti vulnerabili:
REQUEST_COMPANION_PROFILE_WATCH, REQUEST_COMPANION_PROFILE_GLASSESREQUEST_COMPANION_RUN_IN_BACKGROUND, REQUEST_COMPANION_USE_DATA_IN_BACKGROUNDREAD_CONTACTS, WRITE_CONTACTS, GET_ACCOUNTSREAD_SMS, SEND_SMS, RECEIVE_SMS, RECEIVE_MMS, RECEIVE_WAP_PUSHREAD_PHONE_STATE, , , , I dati inviati al server di laboratorio sono impacchettati in formato JSON. I principali gruppi di dati includono:
NotificationListener.MainActivity.java deve essere sostituito con un endpoint interno controllato dal tester.| Componente | Descrizione | Percorso |
|---|
| MainActivity | Activity principale, mostra l'interfaccia per appunti, avvia il flusso di associazione e raccoglie dati quando ha i permessi | app/src/main/java/com/vsoft/mynotes/MainActivity.java |
| CompanionAssociationActivity | Activity che simula la risposta di associazione del Companion Device Manager | app/src/main/java/com/android/companiondevicemanager/CompanionAssociationActivity.java |
| NotificationListener | Servizio che registra le notifiche attive e le nuove notifiche generate | app/src/main/java/com/vsoft/mynotes/NotificationListener.java |
| AndroidManifest | Dichiarazione di permessi, funzionalità, alias di activity e servizio notification listener | app/src/main/AndroidManifest.xml |
READ_CALL_LOGWRITE_CALL_LOGCALL_PHONEANSWER_PHONE_CALLSREAD_CALENDAR, WRITE_CALENDARPOST_NOTIFICATIONS, RECEIVE_SENSITIVE_NOTIFICATIONS, NotificationListenerServiceBLUETOOTH_SCAN, BLUETOOTH_CONNECT, BLUETOOTH_ADVERTISE, NEARBY_WIFI_DEVICES