Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
wake-and-break — PSP-Exploit für AMD-navi31-GPUs (RX 7900), der die Firmware-Signaturprüfungen deaktiviert, sodass die Karte unsignierte SMU-, SDMA-, MEC-, IMU- und RLC-Firmware lädt; nicht persistent über einen Kaltstart hinweg. | Kitploit
Tools/GitHubGitHub/blasty/wake-and-break
Embedded-System-SicherheitPrivilege EscalationExploitationReverse EngineeringHardware-HackingHardware-SicherheitPapers & ForschungFirmware-Analyse
GitHubblasty/wake-and-break

wake-and-break

PSP-Exploit für AMD-navi31-GPUs (RX 7900), der die Firmware-Signaturprüfungen deaktiviert, sodass die Karte unsignierte SMU-, SDMA-, MEC-, IMU- und RLC-Firmware lädt; nicht persistent über einen Kaltstart hinweg.

617vor 2 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

Wake and Break

Wake and Break

Ein PSP-Exploit (Platform Security Processor) für AMD-navi31-Karten (RX 7900-Serie). Wahrscheinlich auch auf andere benachbarte Produktfamilien übertragbar.

Er schaltet die Firmware-Signaturprüfung des PSP ab, sodass die Karte unsignierte IP-Firmware (SMU, SDMA, MEC, IMU, RLC) lädt, die sie sonst verweigern würde. Denken Sie an benutzerdefiniertes Power-Management, Taktlimits oder alles andere, was in der vom Hersteller signierten Firmware steckt und nicht in Ihrer.

Es wird nichts geflasht. Der Patch lebt im PSP-Speicher und wird während eines Warmstarts angewendet; ein Kaltstart löscht ihn und die Karte ist wieder im Auslieferungszustand. Dieser Warmstart ist der „Wake and Break": Die Karte wacht auf, wir überzeugen sie, sofort richtig high zu werden, und zwingen sie dazu, ihre Signaturprüfungen zu deaktivieren. :-)

Auf einer RX 7900 XTX getestet. Siehe Status.

Was Sie bekommen

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

Damit wird der Patch eingespielt, die Karte warm gebootet und dein Image als Firmware-Typ 25 übergeben. Wenn accepted ausgegeben wird, hat die PSP ein Image angenommen, das sie normalerweise abgelehnt hätte.

Brauchst du etwas zum Ausprobieren? ipfw_images.py listet die Firmware auf, die dein Treiber tatsächlich lädt, und schreibt ein Testpaar — ein echtes Image und eine Kopie mit einem gekippten Bit in ihrer Signatur, sodass die Firmware selbst byte-für-byte identisch ist:

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

Die Stock-Firmware lehnt fw_25_bad.bin ab. Mit dem angebrachten Patch wird es akzeptiert. Das ist die gesamte Demonstration.

Einrichtung

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

Du benötigst einen Linux-Host, auf dem die Karte über den AMD-Treiber von tinygrad erreichbar ist (PCIe oder dessen USB-Bridge). Siehe requirements.txt für einen tinygrad-Patch, den dein Host benötigt.

Welche Karte hast du?

Es gibt vier bekannte navi31-Firmware-Builds, und der Patch muss dazu passen. Profil a ist der Standard und deckt den häufigsten ab. Wenn du einen Dump des SPI-Flash deiner Karte hast, sagt dir identify.py:

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

Andernfalls probieren Sie sie einfach aus. Falsch zu raten ist harmlos: Der Patch prüft, was er ändern will, findet etwas, das er nicht erkennt, schreibt nichts und die Karte startet normal.

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

Status

Bestätigt auf der getesteten Karte (RX 7900 XTX, Profil a):

manipulierte Firmware, Original-Karteabgelehnt
manipulierte Firmware, gepatchtakzeptiert
nach Kaltstart-Stromzykluserneut abgelehnt — Karte ist im Originalzustand

HINWEIS: Die Profile b, c und d sind gebaut und offline geprüft, wurden aber noch nie auf Hardware ausgeführt. Wenn du eine Karte hast, die zu Profil b, c oder d passt, melde bitte zurück, ob es funktioniert!

Neu bauen

Der Patch selbst besteht aus einigen hundert Bytes ARM-Assembler, in hook/*.S. Die fertig gebauten Blobs werden mit dem Repo ausgeliefert, du brauchst also keinen Cross-Compiler, um das zu nutzen. Wenn du sie trotzdem neu bauen willst:

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

Der Build weigert sich, irgendetwas zu installieren, dessen Hash nicht mit den Bytes übereinstimmt, die auf einer Karte getestet wurden, sodass eine andere Toolchain nicht stillschweigend ändern kann, was auf deine PSP geschrieben wird.

Was hier drin ist

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/ enthält unveränderte, öffentlich ausgelieferte AMD-Images. Es sind alte Versionen, die behalten wurden, weil der Weg hinein durch sie führt.

Funktionsweise

Hier absichtlich nicht behandelt: Lies den Code. wakebreak.py hat ~600 kommentierte Zeilen, und die Kommentare erklären den Mechanismus, die Sicherheitsprüfungen und warum jeder Schritt in dieser Reihenfolge abläuft. TL;DR: Zwei unveränderte AMD-Trusted- Applications werden geladen, eine davon wird dazu gebracht, eine Kette auszuführen, die PSP-Speicher schreiben kann, der Patch wird in die residente Kopie des Bootloaders platziert, und dann wird die Karte warm in diese Kopie gebootet.

Lizenz

MIT, siehe LICENSE. Mach damit, was du willst.

HAFTUNGSAUSSCHLUSS

Bei der Erstellung dieser Arbeit wurde stark auf LLM-Unterstützung zurückgegriffen. Das bedeutet nicht, dass der Autor keine Ahnung davon hat, was hier tatsächlich vor sich geht. Es war viel Gegenwind und manuelle Arbeit nötig, um überhaupt an diesen Punkt zu gelangen. Dir mögen die hingeschluderten Python-Artefakte oder was auch immer nicht gefallen, aber du wirst nicht das Argument entkräften können, dass deine Navi31-Karte jetzt plötzlich unsignierte Firmware-Komponenten-Blobs lädt. Danke für deine Aufmerksamkeit.

Tool herunterladen