Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/leochen-coremind/spd_flasher
أمان الأنظمة المدمجةالاستغلالالهندسة العكسيةاختراق الأجهزةأمن الجوالالتعلم والتعليم
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 استغلال محصّن - أداة وميض تلقائي لمضيف USB من RP2350 لأجهزة Unisoc

عرض المستودع
317منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

استغلال مُحصَّن لـ CVE-2022-38694 — أداة وميض تلقائي عبر USB Host باستخدام RP2350

中文版 README

البرنامج التعليمي

  • درس هندسة عكسية لسلسلة إقلاع UDX710 والإقلاع المُحصَّن باستخدام RP2350

استغلال ثغرة CVE-2022-38694 في BootROM الخاص بشركة Unisoc عبر Raspberry Pi RP2350 مع USB Host لإرسال SPL Loader تلقائيًا عند الإقلاع وتشغيل أي u-boot.

ينقل سلسلة الاستغلال — التي كانت تتطلب في الأصل جهاز كمبيوتر + spd_dump — إلى متحكم RP2350. وصّل الجهاز، وستتم عملية الوميض تلقائيًا، مع دعم الوميض المستمر.

كيف يعمل

CVE-2022-38694 هي تجاوز لمرة واحدة للتحقق من التوقيع في BootROM الخاص بشركة Unisoc. بإرسال exec stub إلى عنوان ذاكرة محدد، يتم استبدال عنوان الإرجاع، مما يتجاوز فحوصات التوقيع ويسمح لـ BootROM بقبول وتنفيذ أي FDL1.

النقطة الأساسية: يتشارك FDL1 وSPL Loader في نفس عنوان التحميل (0x28007000)، لذلك يمكن إرسال SPL Loader مُصحَّح بدلاً من FDL1 لتشغيل أي u-boot.

عملية التحصين (مرحلتان)

المرحلة 1: الفتح الأولي (PC + spd_dump)

يتطلب الإعداد الأولي جهاز كمبيوتر مع spd_dump:

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────────┐
│                    Stage 1: PC-side Initial Unlock                       │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Step 1: Exploit CVE-2022-38694 to boot patched SPL                     │
│  ┌────────────┐    ┌────────────┐    ┌─────────────────┐                │
│  │ Exec Stub  │───►│ spl-unlock │───►│ Device boots    │                │
│  │ @0x3F28    │    │ @0x28007000│    │ into DL mode    │                │
│  └────────────┘    └────────────┘    └────────┬────────┘                │
│                                               │                          │
│  Step 2: Send patched FDL2 via spd_dump, flash u-boot without           │
│          secure boot, erase splloader                                    │
│                                               │                          │
│  ┌─────────────────┐    ┌──────────────────────▼───────────┐            │
│  │ Send fdl2-dl    │───►│ Write u-boot (secure boot removed│            │
│  │ (patched FDL2)  │    │ + Erase splloader partition)     │            │
│  └─────────────────┘    └──────────────────────────────────┘            │
│                                                                          │
│  ★ After erasing splloader, device enters BootROM DL mode on every boot │
└──────────────────────────────────────────────────────────────────────────┘

الخطوات:

  1. استخدم CVE-2022-38694 لإرسال spl-unlock.bin وتشغيل الجهاز
  2. أرسل fdl2-dl.bin المُصحَّح (FDL2 مع إزالة التحقق من الإقلاع الآمن)
  3. استخدم FDL2 لكتابة u-boot بدون إقلاع آمن إلى قسم uboot
  4. امسح قسم splloader → يفقد الجهاز الإقلاع الطبيعي ويدخل في وضع BootROM DL عند كل تشغيل

المرحلة 2: التشغيل المُحصَّن (الوميض التلقائي عبر RP2350)

عند مسح splloader، يدخل الجهاز في وضع تنزيل BootROM عند كل تشغيل. يتعامل USB Host الخاص بـ RP2350 تلقائيًا مع سلسلة الاستغلال:

root@kitploit:~
┌──────────────────────────────────────────────────────────────────────────┐
│                   Stage 2: RP2350 Automated Boot                        │
├──────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  Power on → no splloader → BootROM download mode                        │
│                                                                          │
│  ┌─────────┐    ┌────────────┐    ┌─────────────┐    ┌──────────────┐  │
│  │ BootROM │───►│ Exec Stub  │───►│ spl-unlock  │───►│ U-Boot       │  │
│  │ Handshk │    │ Bypass sig │    │ as FDL1     │    │ (no secboot) │  │
│  └─────────┘    └────────────┘    └─────────────┘    │ Boot OK ✓    │  │
│                                                       └──────────────┘  │
│                                                                          │
│  ★ Fully automatic. Unplug → auto-reset → ready for next device.       │
└──────────────────────────────────────────────────────────────────────────┘

لماذا مسح splloader؟

  • سلسلة الإقلاع الطبيعية: BootROM → SPL Loader → u-boot → النظام
  • يتحقق SPL Loader من توقيع u-boot — وسيرفض أي u-boot معدَّل
  • عند مسح splloader، لا يتمكن BootROM من العثور على SPL → يدخل في وضع التنزيل
  • يرسل CVE-2022-38694 ملف spl-unlock (متجاوزًا فحص التوقيع) → يتم تشغيل u-boot بنجاح بدون إقلاع آمن

سلسلة الاستغلال (التنفيذ عبر RP2350)

root@kitploit:~
┌─────────────┐     ┌──────────────────┐     ┌───────────────────┐     ┌──────────────┐
│  BootROM    │     │  Exec Stub       │     │  SPL Loader       │     │  U-Boot      │
│  Handshake  │ ──► │  @0x3F28 (136B)  │ ──► │  @0x28007000      │ ──► │  Boot OK     │
│  CHECK_BAUD │     │  Bypass sig chk  │     │  Replaces FDL1    │     │              │
└─────────────┘     └──────────────────┘     └───────────────────┘     └──────────────┘
  1. مصافحة BootROM — CHECK_BAUD + CONNECT, إنشاء اتصال BSL
  2. إرسال Exec Stub — تحميل 136 بايت إلى 0x3F28, استغلال CVE-2022-38694 لاستبدال عنوان الإرجاع وتجاوز التحقق من التوقيع
  3. إرسال SPL Loader — يتشارك FDL1 وSPL Loader في عنوان التحميل 0x28007000، وقد تم تجاوز فحص التوقيع بالفعل
  4. تشغيل U-Boot — يتجاوز spl-unlock فحوصات التوقيع ويشغّل u-boot مع إزالة الإقلاع الآمن

المتطلبات الأساسية: تصحيح البرنامج الثابت

لا يتضمن هذا المشروع برامج ثابتة مصححة لجميع الأجهزة. يجب عليك تصحيح البرنامج الثابت لجهازك بنفسك.

درس التصحيح

راجع Wiki الخاص بـ TomKing062:

  • 🇬🇧 patch_do_cboot — SPL (الإنجليزية)
  • 🇨🇳 patch_do_cboot — SPL (الصينية)

البرامج الثابتة المطلوب تصحيحها

تحويل spl-unlock.bin إلى ترويسة

root@kitploit:~
xxd -i spl-unlock.bin > fdl1_data.h

حدّث اسم المصفوفة والماكرو في fdl1_data.h ليتوافق مع مراجع الكود.

المنصات المدعومة

يستخدم هذا المشروع حاليًا UDX710 exec stub (custom_exec_3f28.bin).

للتكيف مع شرائح أخرى، استبدل exec stub وعنوان التحميل في custom_exec_data.h:

قائمة الدعم الكاملة: SupportList

متطلبات الأجهزة

المكوّنالوصف
لوحة RP2350مثل Raspberry Pi Pico 2
كابل USB HostOTG أو تعديل عتادي لـ USB Host الخاص بـ RP2350
جهاز SPD المستهدفتم مسح splloader، ويدخل تلقائيًا في وضع BootROM DL عند التشغيل

إعداد الأطراف (Pin)

الطرفالوظيفة
USB D+/D-التوصيل بجهاز SPD المستهدف
GP4 (TX)إخراج تصحيح UART
GP5 (RX)إدخال تصحيح UART

يُستخدم منفذ USB للاتصال عبر Host. تُرسل سجلات التصحيح عبر UART1 (GP4/GP5, 115200bps).

البناء

المتطلبات الأساسية

  • Pico SDK v2.2.0+
  • CMake 3.13+
  • سلسلة أدوات ARM GCC

البناء

root@kitploit:~
cd spd_flasher
mkdir build && cd build
cmake .. -DTARGET_CHIP=rp2350
make -j$(nproc)

المخرجات: spd_flasher.uf2 (يُسحب ويُفلت عبر BOOTSEL) / spd_flasher.bin (للمبرمج)

الاستخدام

  1. أكمل المرحلة 1 (الفتح الأولي + مسح splloader) على جهاز الكمبيوتر
  2. ارفع spd_flasher.uf2 إلى RP2350
  3. وصّل RP2350 بالجهاز المستهدف عبر كابل USB Host
  4. شغّل الجهاز → وضع BootROM DL التلقائي → ينفذ RP2350 سلسلة الاستغلال
  5. إعادة تعيين تلقائية عند الاكتمال، وصّل الجهاز التالي فورًا

لماذا RP2350؟

هيكل المشروع

root@kitploit:~
spd_flasher/
├── main.c               # Main program, USB Host init & device management
├── spd_protocol.c        # SPD BSL protocol (HDLC framing, state machine)
├── spd_protocol.h        # Protocol definitions
├── tusb_config.h         # TinyUSB Host configuration
├── custom_exec_data.h    # Exec Stub data (136B @0x3F28)
├── fdl1_data.h           # SPL Loader data (spl-unlock.bin @0x28007000)
├── spl-unlock.bin        # SPL Loader raw binary
├── CMakeLists.txt        # CMake build configuration
└── signing_key.pem / aes_key.bin / iv_salt.bin  # RP2350 secure boot keys

شكر وتقدير

  • CVE-2022-38694 Unlock Bootloader — TomKing062
  • NCC Group Research — اكتشاف الثغرة
  • Raspberry Pi Pico SDK
  • TinyUSB

إخلاء مسؤولية

هذا المشروع مخصص لأغراض البحث الأمني والتعليم فقط. يجب على المستخدمين الامتثال لجميع القوانين واللوائح المعمول بها. لا يتحمل المؤلف أي مسؤولية عن أي أضرار مباشرة أو غير مباشرة ناتجة عن استخدام هذه الأداة.

الترخيص

هذا المشروع مرخّص بموجب GNU General Public License v3.0.

تنزيل الأداة
البرنامج الثابتالتصحيحالمخرَجالغرض
FDL2 (u-boot/lk)NOP لفحوصات كتابة الأقسام الآمنةfdl2-dl.binالمرحلة 1: يُرسَل عبر spd_dump لكتابة الأقسام
U-Bootتصحيح do_cboot() لإزالة الإقلاع الآمنuboot معدَّلالمرحلة 1: يُكتب إلى الجهاز، ليحل محل uboot الأصلي
SPL LoaderNOP لدالة signcheck() وفحوصات النتيجةspl-unlock.binالمرحلتان 1 و2: يُرسَل عبر CVE-2022-38694
المنصةعنوان التنفيذالمرجع
UDX7100x3F28هذا المشروع (الافتراضي)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 المُحصَّن
الحجميتطلب كمبيوترمتحكم واحد
التشغيلأوامر يدويةتشغيل = يعمل
الاستمراريةيدوي لكل جهازإعادة تعيين تلقائية
النشرغير ملائمجاهز للإنتاج
التكلفة—~3$