Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
spd_flasher — CVE-2022-38694 Усиленный эксплойт — автофлешер USB-хоста на базе RP2350 для устройств Unisoc | Kitploit
Инструменты/GitHubGitHub/leochen-coremind/spd_flasher
Безопасность встроенных системЭксплуатацияОбратная инженерияАппаратный ХакингМобильная безопасностьОбучение и Образование
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Усиленный эксплойт — автофлешер USB-хоста на базе RP2350 для устройств Unisoc

Репозиторий
3171 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Усиленный эксплойт 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-заглушки на определённый адрес памяти перезаписывает обратный адрес, обходя проверки подписи и позволяя BootROM принять и выполнить произвольный FDL1.

Ключевая идея: FDL1 и SPL Loader используют один и тот же адрес загрузки (0x28007000), поэтому вместо FDL1 можно отправить пропатченный SPL Loader, загрузив произвольный u-boot.

Процесс укрепления (два этапа)

Этап 1: первоначальная разблокировка (ПК + 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-заглушки — загрузка 136 байт по адресу 0x3F28, использование CVE-2022-38694 для перезаписи обратного адреса и обхода проверки подписи
  3. Отправка SPL Loader — FDL1 и SPL Loader используют общий адрес загрузки 0x28007000, подпись уже обойдена
  4. Загрузка U-Boot — spl-unlock пропускает проверки подписи и загружает u-boot без защищённой загрузки

Предварительные требования: патч прошивки

Этот проект не содержит универсальной пропатченной прошивки. Вы должны самостоятельно пропатчить прошивку своего устройства.

Руководство по патчу

Обратитесь к вики TomKing062:

  • 🇬🇧 patch_do_cboot — SPL (English)
  • 🇨🇳 patch_do_cboot — SPL (中文)

Прошивки для патчинга

Преобразование spl-unlock.bin в заголовок

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

Обновите имя массива и макросы в fdl1_data.h, чтобы они соответствовали ссылкам в коде.

Поддерживаемые платформы

В этом проекте в настоящее время используется exec-заглушка UDX710 (custom_exec_3f28.bin).

Для адаптации к другим чипам замените exec-заглушку и адрес загрузки в custom_exec_data.h:

Полный список поддержки: SupportList

Требования к оборудованию

КомпонентОписание
Плата RP2350например, Raspberry Pi Pico 2
Кабель USB HostOTG или аппаратная модификация для USB Host RP2350
Целевое SPD-устройствоsplloader стёрт, автоматически входит в режим BootROM DL при включении

Распиновка

ВыводНазначение
USB D+/D-Подключение к целевому SPD-устройству
GP4 (TX)Вывод отладки UART
GP5 (RX)Вход отладки UART

Порт USB используется для связи с хостом. Логи отладки — через UART1 (GP4/GP5, 115200 бит/с).

Сборка

Предварительные требования

  • 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
ПлатформаАдрес execСсылка
UDX7100x3F28Этот проект (по умолчанию)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 (укреплённый)
РазмерТребуется ПКОдин МК
УправлениеРучные командыВключение = работа
НепрерывностьВручную для каждого устройстваАвтосброс
РазвёртываниеНеудобноГотов к производству
Стоимость—~$3