Mich hat das Thema letzte Woche mal gereizt und ich habe die BIOS-Versionen der Gigabyte RX 7600 XT Gaming OC verglichen. Also BIOS F20/1072 ➔ F23/1072
Disclaimer: Der folgende Text ist KI-generiert, da ich nicht alles selber niederschreiben wollte. Der Inhalt stimmt.
Die Tabellen für Takt, Spannung und Power-Limits (
smc_dpm_info,
smu_info und
voltageobject_info) sind identisch. Auch
umc_info,
gpio_pin_lut und
displayobjectinfo sind unverändert. Insgesamt sind 19 von 22 ATOM-Datentabellen* gleich geblieben.
Änderungen gibt es bei der PSP-Firmware** und in der VRAM-Tabelle (vram_info).
* Einfach gesagt: Das BIOS besteht aus verschiedenen Abschnitten. Jeder Abschnitt hat einen eigenen Zweck.
** PSP ➔
https://de.wikipedia.org/wiki/AMD_Security_Processor
Die PSP-Abschnitte des BIOS sind AES-128-CBC verschlüsselt (und teilweise komprimiert), lassen sich aber entschlüsseln, wenn man weiß, wie. In diesen Abschnitten wurde der ARM-Code beider Bootstufen des PSP-Bootloaders geändert, also Stage 1 und Stage 2.
Beim PSP wurde unter anderem Folgendes geändert:
- Eine Bereichsprüfung fängt jetzt einen Überlauf bei ptr + len ab. Vorher konnte ein ungültiger Speicherbereich dadurch als gültig durchgehen.
- Weitere Längen- und Pointer-Prüfungen wurden ergänzt oder erweitert.
- Bei formatierten (internen) Logausgaben werden jetzt die String-Pointer für %s geprüft. Diese Prüfung fehlte vorher.
- In der ersten Bootloader-Stufe wurden außerdem Teile des Boot-Ablaufs, Registerzugriffe und Wartezeiten geändert.
Zusätzlich wurden zwei weitere ARM-Firmware-Images geändert, die im
$PSP-Verzeichnis unter den IDs
0x00040 und 0x0005c stehen. In beiden verarbeitet der geänderte Code Tabellen und deren Einträge. Dafür wurden vier Prüfungen ergänzt: Eine Tabellenlänge darf höchstens
0x8000 betragen, an einer weiteren Stelle muss sie zwischen
0x16 und
0x8000 liegen. Ein Anzahl-Feld wird auf den Bereich 1 bis 8 geprüft. Ein weiteres Byte-Feld wird bei Werten über 4 auf 4 zurückgesetzt. - Wie AMD diese beiden Komponenten (0x00040 und 0x0005c) nennt, weiß ich nicht.
Beim VRAM wurden auch ein paar Sachen geändert:
Sie liegen in den DRAM-Konfigurationen für die beiden im BIOS hinterlegten Speicherprofile.
- Samsung K4ZAF325BC: Im ersten Eintrag steigt tRC von 13 auf 19 und tRP von 5 auf 11. In den letzten vier Einträgen sinkt tCCDL von 4 auf 2.
- Hynix H56G42AS8DX014: In allen zwölf Einträgen sinkt tCCDL von 3 auf 2.
Wie sich diese Sicherheitslücken im alten BIOS ausnutzen lassen, weiß ich nicht. Aus dem geänderten Code allein ist schwer zu erkennen, über welchen Weg man die betroffenen Funktionen überhaupt erreichen könnte. Ich würde vermuten, dass dafür mindestens Administratorrechte nötig sind.