
PoC لـ CVE-2024-23700، تصعيد امتيازات صامت في أندرويد يسمح بقراءة/كتابة جهات الاتصال، الرسائل النصية القصيرة، التقويم، سجل المكالمات والبريد الصوتي، إجراء مكالمات صادرة أو الرد على المكالمات الواردة، التلاعب بإعدادات المكالمات، الوصول إلى إشعارات التطبيقات الأخرى والتحكم بها، التحكم في الأجهزة القريبة، تسجيل الصوت، الوصول إلى معرّفات الجهاز، وتجاوز قيود الخلفية
هذا المشروع يوضح CVE-2024-23700، وهي ثغرة تصعيد امتيازات تتعلق بآلية Companion Device في Android. يُظهر إثبات المفهوم (PoC) كيف يمكن لتطبيق استغلال تدفق ربط الجهاز المصاحب (Companion Device) للحصول على أذونات حساسة دون المرور عبر تفاعل منح الأذونات المعتاد في البيئات المعرضة للخطر.
المواد والكود المصدري في هذا المستودع مخصصة فقط للأغراض التعليمية، وتحليل الأمان، والاختبار في بيئة مصرح بها. لا تستخدم على أجهزة أو حسابات أو بيانات ليست ضمن نطاق الاختبار القانوني.
الموضوع ضمن مادة: الأمان على الأجهزة المحمولة
الفريق المنفذ: تم تنفيذ الموضوع بواسطة فريق مكون من 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() مع ملف تعريف جهاز مصاحب لمحاكاة عملية الاستيلاء على الأذونات عبر CVE-2024-23700. إذا كان الجهاز أو ROM يستوفي شروط الثغرة، يمكن للتطبيق الحصول على أذونات حساسة إضافية والوصول إلى البيانات مثل جهات الاتصال، الرسائل النصية، سجل المكالمات، التقويم، الإشعارات، وبعض معلومات الجهاز.
التدفق الرئيسي لعمل إثبات المفهوم:
CompanionAssociationActivity بمحاكاة استجابة الموافقة على ربط الجهاز.كود الثغرة: CVE-2024-23700
مستوى الخطورة في Android: حرج (Critical)
المكون ذو الصلة: Android Companion Device Manager
التصحيح المرجعي: نشرة أمان Android Wear 2024-05-01
التزام التصحيح المرجعي: تصحيح AOSP frameworks/base
وفقًا لملف README الأصلي لإثبات المفهوم، فإن معظم أجهزة Android العادية غير متأثرة، باستثناء بعض الحالات مثل:
com.android.companiondevicemanager.إذا تعذر تثبيت APK الخاص بإثبات المفهوم على الجهاز، فقد يكون ذلك مؤشرًا على أن الجهاز لا يستوفي شروط الثغرة.
CVE-2024-23700/
├── app/
│ ├── build.gradle - تكوين وحدة تطبيق Android
│ ├── proguard-rules.pro - قواعد ProGuard لوحدة التطبيق
│ └── src/main/
│ ├── AndroidManifest.xml - تعريف الأذونات، النشاطات، ومستمع الإشعارات
│ ├── java/
│ │ ├── com/android/companiondevicemanager/
│ │ │ └── CompanionAssociationActivity.java - النشاط الذي يعالج تدفق الارتباط
│ │ └── com/vsoft/mynotes/
│ │ ├── MainActivity.java - المنطق الرئيسي لتطبيق إثبات المفهوم
│ │ └── NotificationListener.java - خدمة الاستماع للإشعارات
│ └── res/
│ ├── drawable/ - موارد الرسم للتطبيق
│ ├── drawable-v24/ - موارد الرسم لواجهة برمجة التطبيقات 24+
│ ├── layout/main.xml - واجهة تطبيق الملاحظات
│ ├── mipmap-*/ - أيقونات التطبيق حسب كثافة الشاشة
│ └── values/ - سلاسل النصوص والمظهر للتطبيق
├── gradle/wrapper/ - ملفات Gradle wrapper jar وتكوينه
├── .gitignore - قواعد استثناء الملفات المحلية، مخرجات البناء، السجلات، والنصوص المساعدة
├── build.gradle - تكوين Gradle على مستوى المشروع
├── gradle.properties - إعدادات Gradle للمشروع
├── gradlew - سكريبت تشغيل Gradle على Linux/macOS
├── gra dlew.bat - سكريبت تشغيل Gradle على Windows
├── settings.gradle - تعريف المشروع والوحدات
└── README.md
يعلن ملف Manifest للتطبيق عن العديد من مجموعات الأذونات للتحقق من تأثير الثغرة في البيئات المعرضة للخطر:
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 بنقطة نهاية داخلية يتحكم بها المختبر.| المكون | الوصف | المسار |
|---|
| MainActivity | النشاط الرئيسي، يعرض واجهة الملاحظات، يستدعي تدفق الارتباط، ويجمع البيانات عند وجود الأذونات | app/src/main/java/com/vsoft/mynotes/MainActivity.java |
| CompanionAssociationActivity | النشاط الذي يحاكي استجابة الارتباط لـ Companion Device Manager | app/src/main/java/com/android/companiondevicemanager/CompanionAssociationActivity.java |
| NotificationListener | خدمة تسجيل الإشعارات النشطة والإشعارات الجديدة | app/src/main/java/com/vsoft/mynotes/NotificationListener.java |
| AndroidManifest | تعريف الأذونات، الميزات، الاسم المستعار للنشاط، وخدمة مستمع الإشعارات | 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