
PoC для CVE-2024-23700, скрытое повышение привилегий в Android, позволяющее читать/записывать контакты, SMS, календарь, журнал вызовов и голосовую почту, совершать исходящие звонки или отвечать на входящие, управлять настройками вызовов, получать доступ к уведомлениям других приложений и управлять ими, управлять ближайшими устройствами, записывать аудио, получать доступ к идентификаторам устройства и обходить ограничения фонового режима.
Проект демонстрирует CVE-2024-23700 — уязвимость повышения привилегий, связанную с механизмом Companion Device на Android. PoC показывает, что приложение может воспользоваться потоком сопряжения вспомогательного устройства для получения ряда чувствительных разрешений, минуя стандартное взаимодействие с запросом разрешений в уязвимых средах.
Документация и исходный код в этом репозитории предоставлены исключительно в образовательных целях, для анализа безопасности и тестирования в разрешённой среде. Не используйте их на устройствах, аккаунтах или данных, не входящих в сферу легального тестирования.
Тема в рамках курса: Безопасность мобильных устройств
Исполнители: Проект выполнен группой из 4 участников.
| № | ФИО | Код студента |
|---|---|---|
| 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 |
В ходе исследования и доработки этого проекта группа выполняла следующие задачи:
Проект реализует Android-приложение, маскирующееся под простое приложение для заметок (My Notes). При запуске приложение вызывает CompanionDeviceManager.associate() с profile вспомогательного устройства, чтобы смоделировать процесс получения привилегий через CVE-2024-23700. Если устройство или ROM удовлетворяют условиям уязвимости, приложение может получить дополнительные чувствительные разрешения и доступ к таким данным, как контакты, SMS, журнал вызовов, календарь, уведомления и некоторая информация об устройстве.
Основной поток работы PoC:
CompanionAssociationActivity имитирует ответ с одобрением сопряжения устройства.Код уязвимости: CVE-2024-23700
Степень серьёзности Android: Critical
Связанный компонент: Android Companion Device Manager
Справочный патч: Android Wear Security Bulletin 2024-05-01
Справочный коммит с исправлением: AOSP frameworks/base patch
Согласно исходному README PoC, большинство обычных Android-устройств не затронуты, за исключением некоторых случаев, например:
com.android.companiondevicemanager.Если PoC APK не удаётся установить на устройство, это может быть признаком того, что устройство не соответствует условиям уязвимости.
CVE-2024-23700/
├── app/
│ ├── build.gradle - Cấu hình module Android application
│ ├── proguard-rules.pro - Quy tắc ProGuard cho module app
│ └── src/main/
│ ├── AndroidManifest.xml - Khai báo quyền, activity và notification listener
│ ├── java/
│ │ ├── com/android/companiondevicemanager/
│ │ │ └── CompanionAssociationActivity.java - Activity xử lý luồng association
│ │ └── com/vsoft/mynotes/
│ │ ├── MainActivity.java - Logic chính của ứng dụng PoC
│ │ └── NotificationListener.java - Dịch vụ lắng nghe thông báo
│ └── res/
│ ├── drawable/ - Tài nguyên drawable của ứng dụng
│ ├── drawable-v24/ - Tài nguyên drawable cho API 24+
│ ├── layout/main.xml - Giao diện ứng dụng ghi chú
│ ├── mipmap-*/ - Icon ứng dụng theo từng mật độ màn hình
│ └── values/ - Chuỗi và theme ứng dụng
├── gradle/wrapper/ - Gradle wrapper jar và cấu hình wrapper
├── .gitignore - Quy tắc loại trừ file local, build output, log và script phụ trợ
├── build.gradle - Cấu hình Gradle cấp project
├── gradle.properties - Thiết lập Gradle của project
├── gradlew - Script chạy Gradle trên Linux/macOS
├── gradlew.bat - Script chạy Gradle trên Windows
├── settings.gradle - Khai báo project và module
└── README.md
Манифест приложения объявляет несколько групп разрешений для проверки воздействия уязвимости в уязвимой среде:
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, , , , Данные, отправляемые на лабораторный сервер, упаковываются в JSON. Основные группы данных:
NotificationListener.MainActivity.java необходимо заменить на внутренний endpoint, контролируемый тестировщиком.| Компонент | Описание | Путь |
|---|
| MainActivity | Главный activity: отображает интерфейс заметок, вызывает поток association и собирает данные при наличии разрешений | app/src/main/java/com/vsoft/mynotes/MainActivity.java |
| CompanionAssociationActivity | Activity, имитирующий ответ association от Companion Device Manager | app/src/main/java/com/android/companiondevicemanager/CompanionAssociationActivity.java |
| NotificationListener | Служба, фиксирующая активные и вновь возникающие уведомления | app/src/main/java/com/vsoft/mynotes/NotificationListener.java |
| AndroidManifest | Объявление разрешений, функций, activity alias и службы 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