Samsung Notebooks auch unter Windows gefährdet
Ende Januar berichteten wir über nicht mehr bootende Samsung-Notebooks, die unter Linux mit UEFI-Boot gestartet worden waren. Hierfür verantwortlich schien der Treiber samsung-laptop zu sein, der unter Linux spezielle Funktionalität der Samsung-Notebooks freischaltet. Anscheinend tritt der Fehler aber auch unter Windows auf.
Matthew Garrett, Kernel-Entwickler und seit Beginn mit UEFI und Secure Boot befasst, gelang es dieser Tage, die Firmware eines Samsung-Notebook unter Windows so aus dem Tritt zu bringen, dass das Gerät nicht mehr startete. Erst ein erneutes Aufspielen der Firmware versetzte das Gerät wieder in einen nutzbaren Zustand.
Damit bestätigte sich sein Verdacht, dass dieser Fehler tiefer geht und nicht nur Linux betrifft. Es bestätigt auch, dass das Sperren des Samsung-Treibers im Linux-Kernel als erste Notmaßnahme zwar den einfachsten Fall verhindert, den Fehler auszulösen, aber nicht mehr. Der eigentliche Fehler findet erst nach dem Laden des Treibers statt und nicht, wie man anfänglich annahm, weil der Treiber unter UEFI an eine falsche Stelle im Hauptspeicher schreibt. Der Treiber greift auf einen bestimmten Speicherbereich zu und sucht eine Signatur von Samsung. Wird diese gefunden, zeigt ein Zeiger auf eine Tabelle, aus der Werte ausgelesen werden, die die einzelnen Funktionen des Treibers dann aktivieren. Dieser Weg ist nicht mehr ganz zeitgemäß, aber auch nicht völlig unüblich. Der eigentliche Fehler wird unter UEFI beim Zugriff auf diese Tabelle ausgelöst und erzeugt ein Log, dessen Größe ursächlich für die Verwirrung der Firmware ist. Warum der Zugriff auf die Tabelle einen Hardwarefehler auslöst und den Bootvorgang stoppt, ist noch unklar.
Der Grund, warum nur UEFI und nicht das herkömmlichen BIOS in dieser Weise betroffen ist, liegt in einer eigentlich nützlichen Funktion von UEFI. Es bietet einen variablen Speicherbereich, der laut Windows-Spezifikation eine Größe von 64 KiloByte haben muss. Dieser Speicherbereich ist dazu gedacht, dass bei einem Absturz des Rechners Fehlermeldungen gespeichert werden, die bei Verwendung eines normalen BIOS nirgendwo geschrieben werden können. Bei Linux ist diese Fehlermeldung auf 10 KiloByte begrenzt und wird im Wiederholungsfall überschrieben, um ein Überlaufen des verfügbaren Speichers zu verhindern. All dies ist kompatibel mit der UEFI-Spezifikation und wird in ähnlicher Weise auch von Apple verwendet.
Einige Samsung-Notebooks verweigern offensichtlich den Start, wenn zu viel des variablen Speichers verwendet wird. Leider ist noch unklar, wie viel das ist. Garrett hatte von Windows aus dem Nutzerbereich als Administrator 36 Variablen von jeweils 1 Kilobyte Länge erzeugt und in den Speicherbereich schreiben lassen. Das reichte aus, um den Fehler zu provozieren. Das Notebook startete nicht mehr, ohne das ein Linux auf der Maschine installiert war. Da das Schreiben von Variablen in diesen Bereich ausdrücklich von der UEFI-Spezifikation erlaubt ist, liegt der Fehler klar in der Firmware. Hier ist also Samsung am Zug, die bereits seit Wochen an einer neuen Version der Firmware arbeiten. Garretts Rat in dieser Situation lautet, die betroffenen Notebooks nur per BIOS zu starten, indem man das Compatibility Support Module (CSM) benutzt. Bei Systemen, die unter Windows per UEFI installiert wurden, gelingt das erst nach einer Neuinstallation.
Nach derzeitigem Stand sind Samsung-Notebooks der Serien 300E5C, 530U3C, 700Z3C, 700Z5C, 700Z7C und 900X4C von dem Firmware-Fehler betroffen.