
PoC para CVE-2024-23700, escalonamento de privilégio silencioso no Android que permite ler/escrever contatos, SMS, calendário, registro de chamadas e correio de voz, fazer chamadas de saída ou atender chamadas de entrada, manipular configurações de chamadas, acessar e controlar notificações enviadas por outros aplicativos, controlar dispositivos próximos, gravar áudio, acessar identificadores de dispositivo e contornar restrição de segundo plano
Projeto que ilustra o CVE-2024-23700, uma vulnerabilidade de escalada de privilégios relacionada ao mecanismo Companion Device no Android. O PoC demonstra que um aplicativo pode explorar o fluxo de associação de dispositivo companheiro para obter permissões sensíveis sem passar pela interação de concessão de permissões usual em ambientes vulneráveis.
A documentação e o código-fonte neste repositório têm fins exclusivamente educacionais, de análise de segurança e de teste em ambientes autorizados. Não utilize em dispositivos, contas ou dados que não estejam no escopo de testes legítimos.
Disciplina: Segurança em Dispositivos Móveis
Equipe: Projeto realizado por uma equipe de 4 membros.
| Nº | Nome completo | Código do aluno |
|---|---|---|
| 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 a pesquisa e conclusão deste projeto, a equipe realizou as seguintes tarefas:
O projeto implementa um aplicativo Android disfarçado de aplicativo simples de anotações (My Notes). Ao ser iniciado, o aplicativo chama CompanionDeviceManager.associate() com o perfil de dispositivo companheiro para simular o processo de obtenção de privilégios por meio do CVE-2024-23700. Se o dispositivo ou ROM atender às condições de exploração, o aplicativo pode obter permissões sensíveis e acessar dados como contatos, SMS, registro de chamadas, calendário, notificações e algumas informações do dispositivo.
Fluxo principal de operação do PoC:
CompanionAssociationActivity simula a resposta de aprovação da associação do dispositivo.Código da vulnerabilidade: CVE-2024-23700
Severidade Android: Crítica
Componente relacionado: Android Companion Device Manager
Patch de referência: Android Wear Security Bulletin 2024-05-01
Commit do patch de referência: AOSP frameworks/base patch
De acordo com o README original do PoC, a maioria dos dispositivos Android comuns não é afetada, exceto alguns casos como:
com.android.companiondevicemanager.Se o APK do PoC não puder ser instalado no dispositivo, isso pode ser um sinal de que o dispositivo não atende às condições de vulnerabilidade para esta falha.
CVE-2024-23700/
├── app/
│ ├── build.gradle - Configuração do módulo do aplicativo Android
│ ├── proguard-rules.pro - Regras ProGuard para o módulo app
│ └── src/main/
│ ├── AndroidManifest.xml - Declaração de permissões, activities e notification listener
│ ├── java/
│ │ ├── com/android/companiondevicemanager/
│ │ │ └── CompanionAssociationActivity.java - Activity que processa o fluxo de associação
│ │ └── com/vsoft/mynotes/
│ │ ├── MainActivity.java - Lógica principal do aplicativo PoC
│ │ └── NotificationListener.java - Serviço de escuta de notificações
│ └── res/
│ ├── drawable/ - Recursos drawable do aplicativo
│ ├── drawable-v24/ - Recursos drawable para API 24+
│ ├── layout/main.xml - Interface do aplicativo de notas
│ ├── mipmap-*/ - Ícones do aplicativo por densidade de tela
│ └── values/ - Strings e tema do aplicativo
├── gradle/wrapper/ - Gradle wrapper jar e configuração do wrapper
├── .gitignore - Regras de exclusão de arquivos locais, saída de build, logs e scripts auxiliares
├── build.gradle - Configuração do Gradle em nível de projeto
├── gradle.properties - Configurações do Gradle do projeto
├── gradlew - Script para executar Gradle no Linux/macOS
├── gradlew.bat - Script para executar Gradle no Windows
├── settings.gradle - Declaração de projeto e módulo
└── README.md
O manifesto do aplicativo declara vários grupos de permissões para verificar o impacto da vulnerabilidade em ambientes vulneráveis:
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, , , , Os dados enviados ao servidor do laboratório são empacotados em JSON. Os principais grupos de dados incluem:
NotificationListener.MainActivity.java deve ser substituído por um endpoint interno controlado pelo testador.| Componente | Descrição | Caminho |
|---|
| MainActivity | Activity principal, exibe interface de notas, inicia o fluxo de associação e coleta dados quando possui permissões | app/src/main/java/com/vsoft/mynotes/MainActivity.java |
| CompanionAssociationActivity | Activity que simula a resposta de associação do Companion Device Manager | app/src/main/java/com/android/companiondevicemanager/CompanionAssociationActivity.java |
| NotificationListener | Serviço que registra notificações ativas e novas notificações | app/src/main/java/com/vsoft/mynotes/NotificationListener.java |
| AndroidManifest | Declara permissões, features, activity alias e serviço de 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