foobar
04.05.2024, 00:19
Moin!
Zur Sicherheit der Hinweis, dass potentielle Startprobleme auf Windows-Nutzer zukommen, die UEFI Secure Boot verwenden. Solche Probleme sind insgesamt wohl eher unwahrscheinlich, aber möglich. Und wenn es passiert, sind sie mitunter schwer zu beheben. Ein TLDR findet sich am Ende dieses Posts.
Dass die UEFI-Spezifikation im Allgemeinen und Secure Boot im Speziellen fundamentale Designfehler enthalten, ist schon lange kein Geheimnis mehr. Eines der Probleme ist, dass man auf Teufel komm raus möglichst viel Kram im Firmware-Speicher des Mainboards hinterlegen wollte. Dieser Dummfug, zusammen mit weiteren Lücken in der Spezifikation, rächt sich nun.
Was ist das Problem? Hier der Schnelldurchlauf: Secure Boot soll dafür sorgen, dass nur „vertrauenswürdige” Bootloader gestartet werden. Die laden ihrerseits nur vertrauenswürdige Betriebssysteme, die nur vertrauenswürdige Treiber laden und so weiter. Und am Ende ist man sicher von Bootsektorviren und Rootkits und dergleichen. So jedenfalls die Versprechen der Industrie und die würden uns natürlich niemals anlügen. Und am besten stellt man keine lästigen Nachfragen wie: „Vertrauenswürdig – für wen?” oder „Wer entscheidet das?” Damit befassen wir uns hier auch nicht, der Post ist auch so schon lang genug.
Vereinfacht gesagt ist die Idee hinter Secure Boot, dass in der Mainboard-Firmware ein Zertifikat hinterlegt ist. Der Bootloader muss gegen dieses Zertifikat signiert sein, sonst führt ihn die Firmware des Boards nicht aus. Aber was ist, wenn sich im Nachgang, also nachdem der Bootloader seinen Prüfstempel erhalten hat, heraus stellt, dass er doch Sicherheitslücken oder andere Probleme hatte, die ihn nicht mehr vertrauenswürdig machen? Würde man das Zertifikat für sich ungültig machen, wären mit einem Schlag alle Bootloader tot. Statt dessen gibt es eine separate Sperrliste (im UEFI-Jargon DBX genannt). In der stehen die Prüfsummen von allen nachträglich gesperrten Bootloadern. Die werden auch dann nicht gestartet, wenn sie eine gültige Signatur aufweisen können. Damit man sich nicht nur auf die BIOS-Updates des Mainboard-Herstellers verlassen muss, kann auch das Betriebssystem die DBX aktualisieren – wovon Windows regelmäßig Gebrauch macht.
Nun war es natürlich für das UEFI-Forum absolut unvorhersehbar, dass diese Liste im Laufe der Zeit immer weiter anwachsen würde. Denn unsichere, alte Bootloader bleiben logischerweise unsicher, also wird nie ein Eintrag gelöscht. Aber es kommen ständig neue hinzu. Und manche Lücken betreffen aufgrund einer gemeinsamen Codebasis mehrere Bootloader zusammen, die dann alle einzeln in die Liste müssen. So kann eine einzige neue Lücke zu Dutzenden von Einträgen führen. Aber da konnte ja niemand mit rechnen. Also schreibt die UEFI-Spezifikation auch nicht vor, wie viel Platz genau nun für die DBX im Firmware-Speicher des Mainboards vorgehalten werden soll.
Auf vielen Boards sind es nur 32KB und das ist eine Grenze, der wir uns nun, nach einigen Jahren in der schönen neuen UEFI-Welt, langsam annähern. Das Konzept droht also an sich selbst zu scheitern. Damit das nicht passiert, müssen jetzt die Betriebssystemhersteller versuchen, um das Problem herum zu arbeiten.
Microsofts Lösung mit dem klingenden Namen „Code Integrity Boot Policy” sieht so aus, dass der Windows-Bootloader seine eigene Sperrliste in der verstecken EFI-Partition vorhält (in der mehr Platz ist als im Speicher des Mainboards). Der Bootloader startet also erst einmal, wirft das Windows an und selbiges prüft, ob es überhaupt hätte gebootet werden sollen und steigt ggf. mit einem BSOD wieder aus. Wem sich an dieser Stelle die Fußnägel aufrollen, hat’s verstanden. Welche Bootloader genau Microsoft nun in diese Sperrliste packt, verraten sie natürlich nicht. Alle öffentlich verfügbaren Listen (bspw. die des UEFI-Forums) sind unvollständig. Wann das entsprechende Update scharf geschaltet wird (die Funktionalität an sich ist offenbar bereits vorhanden), weiß man aktuell auch nicht genau. Vielleicht noch im Mai, vielleicht im Oktober, vielleicht nächstes Jahr. Windows-User sein bleibt also spannend.
Es ist ferner ein DoS-Angriff per USB-Stick auf den Rechner möglich, sofern das betreffende Update von MS noch nicht aktiviert wurde. Das geht so: Zusammen mit der Sperrliste werden zwei Variablen in der UEFI-Firmware gesetzt. Die Firmware ignoriert die, nur der Bootloader interessiert sich für sie. Fehlen sowohl die Sperrlistendatei als auch die Variablen, startet Windows einfach so. Ist beides vorhanden, erfolgt die o.g. Prüfung. Fehlen die Variablen, aber die Sperrliste ist da, setzt Windows die Variablen. Und sind Variablen gesetzt, aber die Sperrliste fehlt, dann stellt sich der Bootloader einfach tot. Soll wohl verhindern, dass ein Angreifer die Liste einfach löscht. Ich muss also auf einem Rechner nur einen USB-Stick mit bootfähigem Windows und Sperrliste einstecken und einmal davon starten. Dann wird der Loader auf dem Stick die Variablen setzen. Beim nächsten Start des installierten Windows stellt dessen Bootloader dann fest, dass es keine Sperrliste gibt (das Update fehlt ja noch). Also stellt er sich tot und der Rechner startet nicht mehr. Da hilft auch keine Neuinstallation, weil die UEFI-Variablen dabei nicht gelöscht werden. So kann man sich auch selbst ins Knie schießen, wenn man bspw. mit einem neu erstellten Windows-Rettungsmedium an einen isoliert stehenden PC geht, der bewusst nicht auf dem neuesten Stand gehalten wurde.
TLDR: UEFI und speziell Secure Boot sind kaputt ab Werk und in Zukunft wird das System noch mal eine ganze Stufe komplexer und damit fehleranfälliger. Die einfachste Lösung dürfte sein, zumindest Secure Boot einfach abzuschalten. Nutzer von Bitlocker sollten aber vorher auf jeden Fall den Wiederherstellungsschlüssel sichern, falls noch nicht geschehen. Denn Bitlocker reagiert allergisch auf Änderungen der UEFI-Einstellungen. Es kann sein, dass es einen Angriff vermutet, wenn Secure Boot plötzlich weg ist und nach dem Schlüssel fragt.
Panik ist nicht notwendig, aber eventuell möchte der eine andere seine Backup-Strategie überdenken und mal gucken, ob Secure Boot wirklich nötig ist. Noch ist Zeit, daher dieser Hinweis.
Zur Sicherheit der Hinweis, dass potentielle Startprobleme auf Windows-Nutzer zukommen, die UEFI Secure Boot verwenden. Solche Probleme sind insgesamt wohl eher unwahrscheinlich, aber möglich. Und wenn es passiert, sind sie mitunter schwer zu beheben. Ein TLDR findet sich am Ende dieses Posts.
Dass die UEFI-Spezifikation im Allgemeinen und Secure Boot im Speziellen fundamentale Designfehler enthalten, ist schon lange kein Geheimnis mehr. Eines der Probleme ist, dass man auf Teufel komm raus möglichst viel Kram im Firmware-Speicher des Mainboards hinterlegen wollte. Dieser Dummfug, zusammen mit weiteren Lücken in der Spezifikation, rächt sich nun.
Was ist das Problem? Hier der Schnelldurchlauf: Secure Boot soll dafür sorgen, dass nur „vertrauenswürdige” Bootloader gestartet werden. Die laden ihrerseits nur vertrauenswürdige Betriebssysteme, die nur vertrauenswürdige Treiber laden und so weiter. Und am Ende ist man sicher von Bootsektorviren und Rootkits und dergleichen. So jedenfalls die Versprechen der Industrie und die würden uns natürlich niemals anlügen. Und am besten stellt man keine lästigen Nachfragen wie: „Vertrauenswürdig – für wen?” oder „Wer entscheidet das?” Damit befassen wir uns hier auch nicht, der Post ist auch so schon lang genug.
Vereinfacht gesagt ist die Idee hinter Secure Boot, dass in der Mainboard-Firmware ein Zertifikat hinterlegt ist. Der Bootloader muss gegen dieses Zertifikat signiert sein, sonst führt ihn die Firmware des Boards nicht aus. Aber was ist, wenn sich im Nachgang, also nachdem der Bootloader seinen Prüfstempel erhalten hat, heraus stellt, dass er doch Sicherheitslücken oder andere Probleme hatte, die ihn nicht mehr vertrauenswürdig machen? Würde man das Zertifikat für sich ungültig machen, wären mit einem Schlag alle Bootloader tot. Statt dessen gibt es eine separate Sperrliste (im UEFI-Jargon DBX genannt). In der stehen die Prüfsummen von allen nachträglich gesperrten Bootloadern. Die werden auch dann nicht gestartet, wenn sie eine gültige Signatur aufweisen können. Damit man sich nicht nur auf die BIOS-Updates des Mainboard-Herstellers verlassen muss, kann auch das Betriebssystem die DBX aktualisieren – wovon Windows regelmäßig Gebrauch macht.
Nun war es natürlich für das UEFI-Forum absolut unvorhersehbar, dass diese Liste im Laufe der Zeit immer weiter anwachsen würde. Denn unsichere, alte Bootloader bleiben logischerweise unsicher, also wird nie ein Eintrag gelöscht. Aber es kommen ständig neue hinzu. Und manche Lücken betreffen aufgrund einer gemeinsamen Codebasis mehrere Bootloader zusammen, die dann alle einzeln in die Liste müssen. So kann eine einzige neue Lücke zu Dutzenden von Einträgen führen. Aber da konnte ja niemand mit rechnen. Also schreibt die UEFI-Spezifikation auch nicht vor, wie viel Platz genau nun für die DBX im Firmware-Speicher des Mainboards vorgehalten werden soll.
Auf vielen Boards sind es nur 32KB und das ist eine Grenze, der wir uns nun, nach einigen Jahren in der schönen neuen UEFI-Welt, langsam annähern. Das Konzept droht also an sich selbst zu scheitern. Damit das nicht passiert, müssen jetzt die Betriebssystemhersteller versuchen, um das Problem herum zu arbeiten.
Microsofts Lösung mit dem klingenden Namen „Code Integrity Boot Policy” sieht so aus, dass der Windows-Bootloader seine eigene Sperrliste in der verstecken EFI-Partition vorhält (in der mehr Platz ist als im Speicher des Mainboards). Der Bootloader startet also erst einmal, wirft das Windows an und selbiges prüft, ob es überhaupt hätte gebootet werden sollen und steigt ggf. mit einem BSOD wieder aus. Wem sich an dieser Stelle die Fußnägel aufrollen, hat’s verstanden. Welche Bootloader genau Microsoft nun in diese Sperrliste packt, verraten sie natürlich nicht. Alle öffentlich verfügbaren Listen (bspw. die des UEFI-Forums) sind unvollständig. Wann das entsprechende Update scharf geschaltet wird (die Funktionalität an sich ist offenbar bereits vorhanden), weiß man aktuell auch nicht genau. Vielleicht noch im Mai, vielleicht im Oktober, vielleicht nächstes Jahr. Windows-User sein bleibt also spannend.
Es ist ferner ein DoS-Angriff per USB-Stick auf den Rechner möglich, sofern das betreffende Update von MS noch nicht aktiviert wurde. Das geht so: Zusammen mit der Sperrliste werden zwei Variablen in der UEFI-Firmware gesetzt. Die Firmware ignoriert die, nur der Bootloader interessiert sich für sie. Fehlen sowohl die Sperrlistendatei als auch die Variablen, startet Windows einfach so. Ist beides vorhanden, erfolgt die o.g. Prüfung. Fehlen die Variablen, aber die Sperrliste ist da, setzt Windows die Variablen. Und sind Variablen gesetzt, aber die Sperrliste fehlt, dann stellt sich der Bootloader einfach tot. Soll wohl verhindern, dass ein Angreifer die Liste einfach löscht. Ich muss also auf einem Rechner nur einen USB-Stick mit bootfähigem Windows und Sperrliste einstecken und einmal davon starten. Dann wird der Loader auf dem Stick die Variablen setzen. Beim nächsten Start des installierten Windows stellt dessen Bootloader dann fest, dass es keine Sperrliste gibt (das Update fehlt ja noch). Also stellt er sich tot und der Rechner startet nicht mehr. Da hilft auch keine Neuinstallation, weil die UEFI-Variablen dabei nicht gelöscht werden. So kann man sich auch selbst ins Knie schießen, wenn man bspw. mit einem neu erstellten Windows-Rettungsmedium an einen isoliert stehenden PC geht, der bewusst nicht auf dem neuesten Stand gehalten wurde.
TLDR: UEFI und speziell Secure Boot sind kaputt ab Werk und in Zukunft wird das System noch mal eine ganze Stufe komplexer und damit fehleranfälliger. Die einfachste Lösung dürfte sein, zumindest Secure Boot einfach abzuschalten. Nutzer von Bitlocker sollten aber vorher auf jeden Fall den Wiederherstellungsschlüssel sichern, falls noch nicht geschehen. Denn Bitlocker reagiert allergisch auf Änderungen der UEFI-Einstellungen. Es kann sein, dass es einen Angriff vermutet, wenn Secure Boot plötzlich weg ist und nach dem Schlüssel fragt.
Panik ist nicht notwendig, aber eventuell möchte der eine andere seine Backup-Strategie überdenken und mal gucken, ob Secure Boot wirklich nötig ist. Noch ist Zeit, daher dieser Hinweis.