
إثبات مفهوم يستغل حقن أوامر DUML عبر البلوتوث في طائرات DJI بدون طيار، حيث يرسل أوامر غير موثّقة لقراءة بيانات الاعتماد، وتعديل إعدادات Wi-Fi، والتحكم في أنظمة الطائرة.
سجل CVE: https://www.cve.org/CVERecord?id=CVE-2026-78306
NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78306
توفّر طائرات DJI واجهة Bluetooth تُستخدم لإنشاء اتصال بواجهة Wi-Fi الخاصة بالطائرة وتبادل بيانات اعتماد Wi-Fi
تتحقق واجهة Bluetooth من UUID الموثوق للجهاز لثلاثة أوامر فقط:
أما الأوامر المتبقية فلا تتطلب نفس فحص المصادقة. ونتيجةً لذلك، قد يتمكن مهاجم بعيد ضمن نطاق Bluetooth من إرسال أوامر DUML غير مصرّح بها إلى الطائرة.
واعتمادًا على الأمر، قد يتمكن المهاجم من تعديل إعدادات الطائرة، بما في ذلك تغيير كلمة مرور Wi-Fi وربما الوصول إلى الشبكة الداخلية للطائرة؛ وتمكين أو تعطيل واجهات الراديو؛ وإعادة تشغيل الطائرة أو إيقاف تشغيلها؛ وإعادة ضبط الإعدادات، مما يؤدي إلى محو جميع مقاطع الفيديو والصور التي التقطتها الطائرة؛ وتنفيذ إجراءات أخرى.
ملاحظة: يعمل الاستغلال حاليًا أثناء الطيران عند التحكم بالطائرة عبر Wi-Fi، وعلى الأرض/عند هبوط الطائرة عند التحكم بها عبر الراديو.
| المنتج | الإصدار المتأثر |
|---|---|
| DJI Neo | 0 – 01.00.0400 |
| DJI Neo 2 | 0 – 01.00.0500 |
| DJI Flip | 0 – 01.00.1200 |
| DJI Air 3 | 0 – 01.00.1600 |
| DJI Air 3S | 0 – 01.00.1400 |
| DJI Avata 2 | 0 – 01.00.0400 |
| DJI Avata 360 | 0 – 01.00.0300 |
| DJI Mavic 3 | 0 – 01.00.1400 |
| DJI Mavic 3 Classic | 0 – 01.00.0800 |
| DJI Mavic 3 Pro | 0 – 01.01.0700 |
| DJI Mavic 4 Pro | 0 – 01.00.0500 |
| DJI Mini 2 | 0 – 01.07.0200 |
| DJI Mini 3 | 0 – 01.00.0500 |
| DJI Mini 3 Pro | 0 – 01.00.0900 |
| DJI Mini 4 Pro | 0 – 01.00.1100 |
| DJI Mini 5 Pro | 0 – 01.00.0600 |
https://github.com/user-attachments/assets/57f51df2-5160-404c-9fd3-2a3a8b700008
# Clone the repository
git clone https://github.com/Wh02m1/CVE-2026-78306.git
cd CVE-2026-78306-POC
# Create and activate a Python virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
python3 ble_console.py
الأوامر التالية مسجّلة في commands.json ويتم توليدها مباشرةً منه. الأوامر المعلَّمة بـ danger تتطلب تأكيدًا صريحًا قبل إرسالها.
| الأمر | ما الذي يفعله |
|---|---|
| GET WiFi SSID [AUTH] | يسترجع SSID الخاص بشبكة Wi-Fi المُهيّأة. يتطلب UUID موثوقًا. |
| GET WiFi Password [AUTH] | يسترجع مفتاح WPA2 المسبق المشاركة الخاص بشبكة Wi-Fi. يتطلب UUID موثوقًا. |
| GET WiFi MAC address [AUTH] | يسترجع عنوان MAC لنقطة الوصول Wi-Fi. يتطلب UUID موثوقًا. |
| GET Country Code | يسترجع رمز الدولة التنظيمي المكوّن من حرفين. |
| GET Channel | يسترجع قناة Wi-Fi النشطة حاليًا. |
| GET Band | يسترجع اختيار النطاق 2.4/5 GHz المُهيّأ. |
| GET RSSI [stub] | يستعلم من معالج RSSI؛ هذا الإصدار يعيد قيمة وهمية (stub). |
| GET WiFi/BT status | يسترجع حالة راديو Wi-Fi وBluetooth. |
| GET Version | يسترجع سلسلة إصدار البرنامج الثابت. |
| الأمر | ما الذي يفعله |
|---|---|
| SET NEW WiFi SSID | يغيّر SSID الخاص بشبكة Wi-Fi المُهيّأ. |
| SET NEW WiFi Password | يغيّر كلمة مرور Wi-Fi المُهيّأة. |
| SET NEW WiFi MAC Address | يغيّر إعداد BSSID الخاص بشبكة Wi-Fi أثناء التشغيل. |
| SET NEW Country Code | يغيّر رمز الدولة التنظيمي المُهيّأ. |
| SET NEW Country Code Ext | يتعامل مع إعداد رمز الدولة الموسّع. |
| SET NEW Channel | يغيّر قناة Wi-Fi ويؤدي إلى إعادة تشغيل نقطة الوصول. |
تُصنَّف هذه العمليات على أنها danger في POC، وبالتالي تتطلب تأكيدًا صريحًا قبل إرسالها.
| الأمر | ما الذي يفعله |
|---|---|
| Start WiFi | يبدأ واجهة Wi-Fi. |
| Stop WiFi | يوقف واجهة Wi-Fi. |
| Restart WiFi + Bluetooth | يعيد تشغيل راديوهات Wi-Fi وBluetooth. |
| Start Bluetooth | يبدأ راديو Bluetooth. |
| Stop Bluetooth | يوقف راديو Bluetooth وينهي الجلسة الحالية. |
| Sysmode power control | يتحكم في حالة تشغيل راديو Wi-Fi/Bluetooth. |
| الأمر | ما الذي يفعله |
|---|---|
| Factory Reset WIFI | يعيد إعدادات Wi-Fi إلى حالتها الافتراضية. |
| Factory Restore Params | يعيد إعدادات الشبكة إلى إعدادات المصنع الافتراضية. |
يصنّف POC كلتا العمليتين على أنهما خطيرتان لأنهما تعدّلان الإعدادات الدائمة.
| الأمر | ما الذي يفعله |
|---|---|
| Start The Drone FTP server | يبدأ خدمة FTP الخاصة بالطائرة. |
| Enable Storage Export | يفعّل تصدير التخزين. |
| Disable Storage Export | يعطّل تصدير التخزين. |
| reboot The Drone | يعيد تشغيل الطائرة. |
| poweroff The Drone | يطفئ الطائرة (يلزم الوصول المادي لإعادة تشغيلها). |
| powersave mode The Drone | يضع الطائرة في وضع توفير الطاقة. |
| الأمر | ما الذي يفعله |
|---|---|
| Start Remote Controller DoS | الخطوة الأولى في تسلسل حجب الخدمة لوحدة التحكم عن بُعد؛ تضع الطائرة في الحالة التي تتطلبها خطوة قطع الاتصال. |
| Stop Remote Controller DoS | يكمل التسلسل: تتوقف الطائرة عن خدمة رابط وحدة التحكم، فتفقد وحدة التحكم عن بُعد الاتصال بالطائرة. شغّل الخطوة الأولى مسبقًا. |
| Remote Controller Recover | يحاول إعادة الطائرة إلى التشغيل الطبيعي. |
| الأمر | ما الذي يفعله |
|---|---|
| Change a parameter | يغيّر معامل إعداد في الطائرة باستخدام تجزئة اسمه ذات 32 بت. |
| Reset a parameter | يعيد معامل إعداد إلى قيمته الافتراضية في البرنامج الثابت. |
يحصل POC على أسماء المعاملات من flyc_parameters.txt ويوفّر اختيارًا تفاعليًا للمعاملات. لإضافة معامل معروف تريد تعديله أو إعادة ضبطه، أضف اسمه إلى flyc_parameters.txt. سيصبح المعامل بعد ذلك متاحًا للاختيار عند بدء POC.
الأوامر المصنّفة على أنها danger تتطلب تأكيدًا صريحًا قبل الإرسال.
تعرض شاشة التأكيد معلومات مثل:
──────────────────────────────────────────────────────────────────────
!!! DANGEROUS COMMAND !!!
──────────────────────────────────────────────────────────────────────
COMMAND Factory Reset WIFI
ROUTE 07/0f → 0x07
PAYLOAD (none)
DOES resets the Wi-Fi config and regenerates the PSK
WARNING Disconnects every device currently on the drone's Wi-Fi.
──────────────────────────────────────────────────────────────────────
Type YES to send:
توفّر دالة Change a parameter إمكانية الوصول إلى معاملات التهيئة المعروفة المدرجة في flyc_parameters.txt.
تستخدم دالة Reset a parameter الأمر reset_cfg_item لإعادة المعامل المحدد إلى قيمته الافتراضية في البرنامج الثابت.
للحصول على قائمة كاملة بالمعاملات المستخرجة ومزيد من التفاصيل، راجع صفحة FLYC Parameters على الويكي.
يوفّر POC أيضًا عدة وحدات ماكرو محددة مسبقًا:
| الأمر | الوصف |
|---|---|
| Restart Wifi | يوقف Wi-Fi ثم يعيد تشغيله (0x42 متبوعًا بـ 0x41). |
| SET NEW PSK + Restart wifi | يغيّر PSK ثم يعيد تشغيل Wi-Fi. |
| Probe read commands | يرسل أوامر القراءة المسجّلة ويبلّغ عن الأوامر التي تستجيب. |
تُعرَّف وحدات الماكرو بشكل منفصل عن إدخالات الأوامر الفردية.
⚠️ تحذير: هذا الدليل العملي (POC) مخصص حصريًا لأغراض تعليمية وبحث أمني واختبار اختراق مصرّح به.