Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
wake-and-break — Exploit PSP pour les GPU AMD navi31 (RX 7900) qui désactive les vérifications de signature du firmware afin que la carte charge des firmwares SMU, SDMA, MEC, IMU et RLC non signés ; non persistant après un démarrage à froid. | Kitploit
Outils/GitHubGitHub/blasty/wake-and-break
Sécurité des Systèmes EmbarquésEscalade de PrivilègesExploitationRétro-ingénierieHacking MatérielSécurité MatérielleArticles et RechercheAnalyse de Micrologiciel
GitHubblasty/wake-and-break

wake-and-break

Exploit PSP pour les GPU AMD navi31 (RX 7900) qui désactive les vérifications de signature du firmware afin que la carte charge des firmwares SMU, SDMA, MEC, IMU et RLC non signés ; non persistant après un démarrage à froid.

611il y a 1 jourPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

Wake and Break

Wake and Break

Un exploit PSP (Platform Security Processor) pour les cartes AMD navi31 (série RX 7900). Probablement adaptable à d'autres familles de produits adjacentes également.

Il désactive la vérification de signature du firmware du PSP, de sorte que la carte chargera un firmware IP non signé (SMU, SDMA, MEC, IMU, RLC) qu'elle refuserait autrement. Pensez gestion personnalisée de l'alimentation, limites d'horloge, ou tout ce qui réside dans un firmware signé par le vendeur et que vous ne contrôlez pas.

Rien n'est flashé. Le patch réside dans la mémoire du PSP et est appliqué lors d'un warm boot ; un cycle d'alimentation à froid l'efface et la carte redevient d'origine. Ce warm boot est le « Wake and Break » : la carte se réveille, nous la convainquons de monter très haut immédiatement et la contraignons à neutraliser les vérifications de signature. :-)

Testé sur une carte RX 7900 XTX. Voir Status.

Ce que vous obtenez

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

Cela applique le patch, effectue un warm-boot de la carte et soumet votre image en tant que firmware de type 25. S'il affiche accepted, le PSP a accepté une image qu'il aurait normalement rejetée.

Besoin de quelque chose pour l'essayer ? ipfw_images.py liste le firmware que votre pilote charge réellement et écrit une paire de test — une image authentique et une copie avec un bit inversé dans sa signature, de sorte que le firmware lui-même soit identique octet pour octet :

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

Le firmware d'origine rejette fw_25_bad.bin. Avec le correctif en place, il est accepté. C'est toute la démonstration.

Configuration

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

Vous avez besoin d'un hôte Linux avec la carte accessible via le pilote AMD de tinygrad (PCIe ou son pont USB). Consultez requirements.txt pour un correctif tinygrad dont votre hôte a besoin.

Quelle carte avez-vous ?

Il existe quatre versions connues du firmware navi31, et le correctif doit correspondre. Le profil a est celui par défaut et couvre le plus courant. Si vous disposez d'un dump de la mémoire flash SPI de votre carte, identify.py vous indiquera :

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

Sinon, essayez-les simplement. Se tromper n'est pas dangereux : le patch vérifie ce qu'il est sur le point de modifier, découvre quelque chose qu'il ne reconnaît pas, n'écrit rien, et la carte démarre normalement.

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

État

Confirmé sur la carte testée (RX 7900 XTX, profil a) :

firmware altéré, carte d'originerejeté
firmware altéré, patchéaccepté
après un cycle d'alimentation à froidrejeté à nouveau — la carte est d'origine

REMARQUE : Les profils b, c et d sont compilés et vérifiés hors ligne mais n'ont jamais été exécutés sur du matériel. Si vous possédez une carte correspondant au profil b, c ou d, merci de signaler si cela fonctionne !

Recompilation

Le patch lui-même représente quelques centaines d'octets d'assembleur ARM, dans hook/*.S. Les blobs compilés sont fournis avec le dépôt, vous n'avez donc pas besoin d'un compilateur croisé pour l'utiliser. Si vous souhaitez tout de même les recompiler :

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

Le build refuse d'installer tout ce dont le hash ne correspond pas aux octets qui ont été testés sur une carte, ainsi une chaîne d'outils différente ne peut pas modifier discrètement ce qui est écrit sur votre PSP.

Contenu

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/ contient des images AMD publiques non modifiées. Ce sont d'anciennes versions, conservées parce que le chemin d'accès passe par elles.

Fonctionnement

Volontairement non couvert ici : lisez le code. wakebreak.py fait environ 600 lignes commentées et les commentaires expliquent le mécanisme, les contrôles de sécurité et pourquoi chaque étape est ordonnée comme elle l'est. TL;DR: deux applications de confiance AMD d'origine sont chargées, l'une d'elles est amenée à exécuter une chaîne capable d'écrire dans la mémoire du PSP, le patch est placé dans la copie résidente du bootloader, puis la carte est réamorcée à chaud dessus.

Licence

MIT, voir LICENSE. Faites-en ce que vous voulez.

AVERTISSEMENT

Une assistance intensive de LLM a été utilisée pour produire ce travail. Cela ne signifie pas que l'auteur n'a aucune idée de ce qui se passe réellement ici. beaucoup de résistance et de travail manuel ont été nécessaires pour arriver ne serait-ce qu'à ce stade. Vous n'aimerez peut-être pas les artefacts Python bâclés ou quoi que ce soit d'autre, mais vous ne pourrez pas contester le fait que votre carte Navi31 charge désormais soudainement des blobs de composants de firmware non signés. Merci de votre attention.

Télécharger l’outil