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
wake-and-break — Exploit de PSP para GPUs AMD navi31 (RX 7900) que desactiva las comprobaciones de firma del firmware para que la tarjeta cargue firmware SMU, SDMA, MEC, IMU y RLC sin firmar; no persistente tras un arranque en frío. | Kitploit
Herramientas/GitHubGitHub/blasty/wake-and-break
Seguridad de Sistemas EmbebidosEscalada de PrivilegiosExplotaciónIngeniería InversaHacking de HardwareSeguridad de HardwarePapers e InvestigaciónAnálisis de Firmware
GitHubblasty/wake-and-break

wake-and-break

Exploit de PSP para GPUs AMD navi31 (RX 7900) que desactiva las comprobaciones de firma del firmware para que la tarjeta cargue firmware SMU, SDMA, MEC, IMU y RLC sin firmar; no persistente tras un arranque en frío.

611hace 1 díaAú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
Ver Repositorio

Wake and Break

Wake and Break

Un exploit de PSP (Platform Security Processor) para tarjetas AMD navi31 (serie RX 7900). Probablemente adaptable también a otras familias de productos adyacentes.

Desactiva la comprobación de firmas del firmware del PSP, de modo que la tarjeta cargará firmware de IP sin firmar (SMU, SDMA, MEC, IMU, RLC) que de otro modo rechazaría. Piensa en gestión de energía personalizada, límites de reloj o cualquier otra cosa que resida en el firmware que el fabricante firma y tú no.

No se flashea nada. El parche reside en la memoria del PSP y se aplica durante un arranque en caliente; un ciclo de apagado en frío lo borra y la tarjeta vuelve a estar de fábrica. Ese arranque en caliente es el "Wake and Break": la tarjeta se despierta, la convencemos de que se ponga muy high de inmediato y la coaccionamos para que anule las comprobaciones de firma. :-)

Probado en una tarjeta RX 7900 XTX. Consulta Status.

Qué obtienes

python3 wakebreak.py 25=/path/to/firmware.bin

Eso coloca el parche, reinicia en caliente la tarjeta y envía tu imagen como firmware tipo 25. Si imprime accepted, el PSP aceptó una imagen que normalmente habría rechazado.

¿Necesitas algo para probarlo? ipfw_images.py lista el firmware que tu controlador carga realmente y escribe un par de prueba — una imagen genuina y una copia con un bit invertido en su firma, de modo que el firmware en sí es idéntico byte por byte:

python3 ipfw_images.py             # what does this card load?
python3 ipfw_images.py 25          # -> /tmp/fw_25_{ok,bad}.bin
python3 wakebreak.py 25=/tmp/fw_25_bad.bin

El firmware de fábrica rechaza fw_25_bad.bin. Con el parche aplicado, se acepta. Esa es toda la demostración.

Configuración

python3 -m venv venv
venv/bin/pip install -r requirements.txt
make verify          # are the shipped artifacts intact?
make selftest        # offline sanity checks, no card touched

Necesitas un host Linux con la tarjeta accesible a través del controlador AMD de tinygrad (PCIe o su puente USB). Consulta requirements.txt para ver un parche de tinygrad que tu host necesita.

¿Qué tarjeta tienes?

Existen cuatro compilaciones de firmware navi31 conocidas, y el parche debe coincidir. El perfil a es el predeterminado y cubre el más común. Si tienes un volcado de la memoria flash SPI de tu tarjeta, identify.py te lo indicará:

python3 identify.py FLASH.bin
# -> sos-build c: wakebreak.py --sos-build c

De lo contrario, simplemente pruébalos. Equivocarse no tiene consecuencias: el parche comprueba lo que está a punto de modificar, encuentra algo que no reconoce, no escribe nada y la tarjeta arranca con normalidad.

python3 wakebreak.py --sos-build c 25=/tmp/fw_25_bad.bin

Estado

Confirmado en la tarjeta probada (RX 7900 XTX, perfil a):

firmware manipulado, tarjeta de fábricarechazado
firmware manipulado, parcheadoaceptado
tras un ciclo de apagado en fríorechazado de nuevo — la tarjeta está de fábrica

NOTA: Los perfiles b, c y d están compilados y verificados sin conexión, pero nunca se han ejecutado en hardware. Si tienes una tarjeta que coincida con el perfil b, c o d, ¡informa si funciona!

Recompilación

El parche en sí son unos cientos de bytes de ensamblador ARM, en hook/*.S. Los blobs compilados se incluyen con el repositorio, así que no necesitas un compilador cruzado para usar esto. Si aun así quieres recompilarlos:

make rebuild                                  # needs arm-none-eabi binutils
make rebuild CROSS=/path/to/arm-none-eabi-

La compilación se niega a instalar cualquier cosa cuyo hash no coincida con los bytes que se probaron en una tarjeta, por lo que una cadena de herramientas diferente no puede cambiar silenciosamente lo que se escribe en tu PSP.

Qué hay aquí

wakebreak.py        the exploit
identify.py       which --sos-build does this card need?
ipfw_images.py    build a signed/tampered firmware pair to test with
selftest.py       offline checks
hook/             the patch: ARM sources and built blobs
firmware/         two stock AMD firmware images the exploit needs to get in

firmware/ contiene imágenes AMD sin modificar, distribuidas públicamente. Son versiones antiguas, conservadas porque el camino de entrada pasa a través de ellas.

Cómo funciona

No cubierto aquí a propósito: lee el código. wakebreak.py tiene ~600 líneas comentadas y los comentarios explican el mecanismo, las comprobaciones de seguridad y por qué cada paso está ordenado de la manera en que está. TL;DR: se cargan dos aplicaciones de confianza estándar de AMD, a una de ellas se la convence de ejecutar una cadena que puede escribir en la memoria del PSP, el parche se coloca en la copia residente del bootloader, y luego la tarjeta se reinicia en caliente dentro de él.

Licencia

MIT, ver LICENSE. Haz lo que quieras con ello.

DESCARGO DE RESPONSABILIDAD

Se utilizó una asistencia intensiva de LLM en la producción de este trabajo. Eso no significa que el autor no tenga ni idea de lo que realmente está pasando aquí. mucha resistencia y trabajo manual estuvieron involucrados para siquiera llegar a este punto. Puede que no te gusten los artefactos de python generados a lo bruto o lo que sea, pero no podrás discutir el hecho de que tu tarjeta Navi31 ahora, de repente, carga blobs de componentes de firmware sin firmar. Gracias por su atención.

Descargar herramienta