Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
spd_flasher — CVE-2022-38694 Exploit reforzado - Autoflasher USB Host RP2350 para dispositivos Unisoc | Kitploit
Herramientas/GitHubGitHub/leochen-coremind/spd_flasher
Seguridad de Sistemas EmbebidosExplotaciónIngeniería InversaHacking de HardwareSeguridad MóvilAprendizaje y Educación
GitHubleochen-coremind/spd_flasher

spd_flasher

CVE-2022-38694 Exploit reforzado - Autoflasher USB Host RP2350 para dispositivos Unisoc

Ver Repositorio
3119hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2022-38694 Exploit Endurecido — Autoflasher USB Host RP2350

README en chino

Tutorial

  • Tutorial de ingeniería inversa de la cadena de arranque de UNISOC UDX710 y de arranque endurecido con RP2350

Explotando la vulnerabilidad CVE-2022-38694 del BootROM de Unisoc mediante un Raspberry Pi RP2350 como USB Host para enviar automáticamente el SPL Loader al arrancar e iniciar un u-boot arbitrario.

Traslada la cadena del exploit — originalmente requería un PC + spd_dump — a un microcontrolador RP2350. Conecta el dispositivo, flashea automáticamente y admite flasheo continuo.

Cómo funciona

CVE-2022-38694 es un bypass de verificación de firma de un solo uso en el BootROM de Unisoc. Al enviar un exec stub a una dirección de memoria específica, se sobrescribe la dirección de retorno, se omiten las comprobaciones de firma y se permite que BootROM acepte y ejecute un FDL1 arbitrario.

Dato clave: FDL1 y SPL Loader comparten la misma dirección de carga (0x28007000), por lo que se puede enviar un SPL Loader parcheado en lugar de FDL1, arrancando un u-boot arbitrario.

Proceso de endurecimiento (dos etapas)

Etapa 1: Desbloqueo inicial (PC + spd_dump)

La configuración inicial requiere un PC con spd_dump:

┌──────────────────────────────────────────────────────────────────────────┐
│                    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 │
└──────────────────────────────────────────────────────────────────────────┘

Pasos:

  1. Use CVE-2022-38694 para enviar spl-unlock.bin e iniciar el dispositivo
  2. Envíe el fdl2-dl.bin parcheado (FDL2 sin verificación de arranque seguro)
  3. Use FDL2 para escribir u-boot sin arranque seguro en la partición uboot
  4. Borre la partición splloader → el dispositivo pierde el arranque normal y entra en modo DL de BootROM en cada encendido

Etapa 2: Operación endurecida (autoflash RP2350)

Con el splloader borrado, el dispositivo entra en modo de descarga BootROM cada vez que se enciende. El RP2350 USB Host gestiona automáticamente la cadena del exploit:

┌──────────────────────────────────────────────────────────────────────────┐
│                   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.       │
└──────────────────────────────────────────────────────────────────────────┘

¿Por qué borrar splloader?

  • Cadena de arranque normal: BootROM → SPL Loader → u-boot → Sistema
  • SPL Loader verifica la firma de u-boot: rechazará un u-boot modificado
  • Con el splloader borrado, BootROM no encuentra el SPL y cae en modo de descarga
  • CVE-2022-38694 envía spl-unlock (omite la comprobación de firma) → consigue arrancar u-boot sin arranque seguro

Cadena del exploit (ejecución en RP2350)

┌─────────────┐     ┌──────────────────┐     ┌───────────────────┐     ┌──────────────┐
│  BootROM    │     │  Exec Stub       │     │  SPL Loader       │     │  U-Boot      │
│  Handshake  │ ──► │  @0x3F28 (136B)  │ ──► │  @0x28007000      │ ──► │  Boot OK     │
│  CHECK_BAUD │     │  Bypass sig chk  │     │  Replaces FDL1    │     │              │
└─────────────┘     └──────────────────┘     └───────────────────┘     └──────────────┘
  1. Handshake del BootROM — CHECK_BAUD + CONNECT, establece la comunicación BSL
  2. Enviar exec stub — Carga 136 bytes en 0x3F28, explota CVE-2022-38694 para sobrescribir la dirección de retorno y omitir la verificación de firma
  3. Enviar SPL Loader — FDL1 y SPL Loader comparten la dirección de carga 0x28007000, la firma ya está omitida
  4. Arrancar U-Boot — spl-unlock omite las comprobaciones de firma y arranca u-boot con el arranque seguro eliminado

Requisitos previos: parchear el firmware

Este proyecto no incluye firmware parcheado universal. Debes parchear el firmware de tu dispositivo tú mismo.

Tutorial de parcheo

Consulta la wiki de TomKing062:

  • 🇬🇧 patch_do_cboot — SPL (inglés)
  • 🇨🇳 patch_do_cboot — SPL (chino)

Firmware a parchear

FirmwareParcheSalidaPropósito
FDL2 (u-boot/lk)NOP en las comprobaciones de escritura de particiones segurasfdl2-dl.binEtapa 1: se envía mediante spd_dump para escribir particiones
U-BootParchear do_cboot() para eliminar el arranque segurouboot modificadoEtapa 1: se escribe en el dispositivo y reemplaza el uboot de serie
SPL LoaderNOP en signcheck() y en las comprobaciones de resultadospl-unlock.binEtapas 1 y 2: se envía mediante CVE-2022-38694

Convertir spl-unlock.bin en cabecera

xxd -i spl-unlock.bin > fdl1_data.h

Actualiza el nombre del array y las macros en fdl1_data.h para que coincidan con las referencias del código.

Plataformas compatibles

Este proyecto utiliza actualmente el exec stub UDX710 (custom_exec_3f28.bin).

Para adaptarlo a otros chips, reemplaza el exec stub y la dirección de carga en custom_exec_data.h:

Descargar herramienta