Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
spd_flasher — CVE-2022-38694 강화된 익스플로잇 - Unisoc 기기용 RP2350 USB 호스트 자동 플래셔 | Kitploit
도구/GitHubGitHub/leochen-coremind/spd_flasher
Embedded Systems SecurityExploitationReverse EngineeringHardware HackingMobile SecurityLearning & Education
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 강화된 익스플로잇 - Unisoc 기기용 RP2350 USB 호스트 자동 플래셔

저장소 보기
3116일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2022-38694 강화 익스플로잇 — RP2350 USB 호스트 자동 플래셔

중국어 버전 README

튜토리얼

  • UDX710 부트 체인 리버스 엔지니어링 및 RP2350 강화 부트 튜토리얼

CVE-2022-38694 Unisoc BootROM 취약점을 Raspberry Pi RP2350 USB 호스트를 통해 악용하여 부팅 시 SPL 로더를 자동으로 전송하고 임의의 u-boot를 시작합니다.

원래 PC + spd_dump가 필요했던 익스플로잇 체인을 RP2350 마이크로컨트롤러로 옮깁니다. 장치를 연결하면 자동으로 플래싱되며, 연속 플래싱을 지원합니다.

작동 원리

CVE-2022-38694는 Unisoc BootROM의 일회성 서명 검증 우회입니다. 특정 메모리 주소로 exec 스텁을 전송하면 반환 주소가 덮어써져 서명 검사를 우회하고 BootROM이 임의의 FDL1을 수락하고 실행할 수 있게 됩니다.

핵심 포인트: FDL1과 SPL 로더는 동일한 로드 주소(0x28007000)를 공유하므로, 패치된 SPL 로더를 FDL1 대신 전송하여 임의의 u-boot를 부팅할 수 있습니다.

강화 프로세스 (2단계)

1단계: 초기 잠금 해제 (PC + spd_dump)

최초 설정에는 spd_dump가 설치된 PC가 필요합니다:

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 다운로드 모드로 진입합니다. RP2350 USB 호스트가 익스플로잇 체인을 자동으로 처리합니다:

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 로더 → u-boot → 시스템
  • SPL 로더는 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 스텁 전송 — 0x3F28에 136바이트를 로드하고 CVE-2022-38694를 악용하여 반환 주소를 덮어쓴 뒤 서명 검증을 우회합니다
  3. SPL 로더 전송 — FDL1과 SPL 로더는 로드 주소 0x28007000을 공유하며, 서명은 이미 우회되었습니다
  4. U-Boot 부팅 — spl-unlock이 서명 검사를 건너뛰고 보안 부팅이 제거된 u-boot를 부팅합니다

전제 조건: 펌웨어 패치

이 프로젝트는 범용 패치 펌웨어를 포함하지 않습니다. 장치의 펌웨어를 직접 패치해야 합니다.

패치 튜토리얼

TomKing062의 Wiki를 참조하세요:

  • 🇬🇧 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 스텁(custom_exec_3f28.bin)을 사용합니다.

다른 칩에 적용하려면 custom_exec_data.h에서 exec 스텁과 로드 주소를 교체하세요:

전체 지원 목록: SupportList

하드웨어 요구 사항

구성 요소설명
RP2350 보드예: Raspberry Pi Pico 2
USB 호스트 케이블RP2350 USB 호스트용 OTG 또는 하드웨어 개조
대상 SPD 장치splloader가 삭제되어 전원을 켜면 자동으로 BootROM DL 모드 진입

핀 구성

핀기능
USB D+/D-대상 SPD 장치에 연결
GP4 (TX)UART 디버그 출력
GP5 (RX)UART 디버그 입력

USB 포트는 호스트 통신에 사용됩니다. 디버그 로그는 **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. PC에서 1단계(초기 잠금 해제 + splloader 삭제)를 완료하세요
  2. spd_flasher.uf2를 RP2350에 플래싱하세요
  3. USB 호스트 케이블로 RP2350을 대상 장치에 연결하세요
  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.bin1단계: 파티션 쓰기를 위해 spd_dump로 전송
U-Bootdo_cboot()를 패치하여 보안 부팅 제거수정된 uboot1단계: 장치에 기록되어 기본 uboot를 대체
SPL 로더signcheck() 및 결과 검사를 NOP 처리spl-unlock.bin1단계 및 2단계: CVE-2022-38694를 통해 전송
플랫폼실행 주소참조
UDX7100x3F28이 프로젝트(기본값)
UMS312 / UMS5120x3EE8exec_addr_v2
UMS92300x65017F08exec_addr_v2
SC9820E / SC9832E0x4F18 / 0x4EE8CVE-2022-38694
PC + spd_dumpRP2350 강화형
크기PC 필요단일 MCU
작동수동 명령전원 켜기 = 실행
연속 작업장치마다 수동자동 리셋
배포불편함생산 준비 완료
비용—~$3