UEFI-BIOS mit bekannt unsicherem Code gespickt

In einem BIOS-Update fanden Experten mehrere OpenSSL-Versionen, teils mit uralten Sicherheitslücken. Das wirft ein Schlaglicht auf Risiken von PC-Firmware.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 69 Beiträge

(Bild: c’t Magazin)

Von
  • Christof Windeck

Die mehr als 20 Megabyte Binärcode eines modernen UEFI-BIOS enthalten mehrere Hundert ausführbare (EFI-)Programme. Viele davon haben Sicherheitslücken, von denen einige schon seit Jahren bekannt sind. Das belegen Experten der Firma Binarly am Beispiel eines aktuellen BIOS-Updates für ein Business-Notebook aus der Baureihe Lenovo ThinkPad.

Die Binarly-Gründer Alex Matrosov und Claudiu Teodorescu haben den BIOS-Binärcode gezielt nach Varianten des Open-Source-Tools OpenSSL durchforstet. OpenSSL dient im offengelegten EFI Design Kit II (EDK 2), welches die Quellcode-Basis vieler UEFI-BIOS-Implementierungen bildet, als Allzweck-Werkzeug für kryptrografische Sicherheitsfunktionen. Denn das UEFI-Codemodul Crypto Package (CryptoPkg) dient unter anderem als Wrapper für OpenSSL-Funktionen.

Ein real existierendes UEFI-BIOS enthält allerdings UEFI-Code und BLOBs von unterschiedlichen Firmen und Zulieferern. Und solche BLOBs sind teilweise schon älter oder basieren auf älterem Quellcode.

Virustotal.com analysiert auch BIOS-Images und findet in diesem für ein aktuelles Lenovo ThinkPad X1 606 Dateien.

Der Online-Dienst Virustotal.com kann bestimmte BIOS-Images "zerlegen" und zeigte in einem kurzen Versuch mit einem Lenovo-BIOS-Image über 600 einzelne Module an.

Die Binarly-Experten fanden jedenfalls in dem untersuchten BIOS-Image, das Lenovo auch über den Linux Vendor Firmware Service (LVFS) bereitstellt, 27 Funktionen mit drei verschiedenen OpenSSL-Versionen. In den meisten steckte OpenSSL 1.0.2j aus dem Jahr 2018, aber es fanden sich auch OpenSSL 1.0.0a und 0.9.8zb aus dem Jahr 2014.

In OpenSSL 0.9.8zb stecken laut Binarly seit acht Jahren bekannte Sicherheitslücken. Pikanterweise dient das Codemodul "InfineonTpmUpdateDxe" mit dieser OpenSSL-Version wohl dazu, Firmware-Updates für das Trusted Platform Module (TPM) einzuspielen, also für den Sicherheitschip, der als Hardware-Anker (Root of Trust) für wichtige Sicherheitsfunktionen dient.

UEFI-Code-Module mit OpenSSL-Versionen laut Binarly
UEFI-Code-Module OpenSSL-Version
DxeCore, Tcg2Dxe, TcgDxe, VariableSmm, SecurityStubDxe, IpSecDxe, IScsiDxe, Setup, PlatformMilestoneHookDxe, PlatformMilestoneHookSmm, LenovoTpmConfigDxe, PlatformInit, PeimBoardInit, Tcg2Pei, TcgPei, PlatformInitPreMem, LenovoPcdInit, LenovoVerifiedBootPei OpenSSL 1.0.2j (2018)
FlashUtilitySmm, LenovoCryptService, LenovoCryptServiceSmm, LenovoSvpManagerSmm, LenovoSetupAutomationSmm, LenovoSetupUnderOsSmm, LenovoSecureKeySmm, LenovoDriveEraseSmm OpenSSL 1.0.0a (2014)
InfineonTpmUpdateDxe OpenSSL 0.9.8zb (2014)
DXE = Driver Execution Environment, SMM = System Management Mode
PEI = Pre-EFI Initialization, PEIM = Pre-EFI Initialization Module

Laut Binarly ist das OpenSSL-Versionsgewirr in einem real existierenden BIOS-Update nur eines von zahlreichen Beispielen dafür, dass das gängige Konzept zur Pflege von (UEFI-)Firmware nicht funktioniert: "The Firmware Supply-Chain Security Is Broken". Dadurch werden bekannte Sicherheitslücken zum Teil jahrelang nicht geschlossen.

  • Hören Sie dazu auch im Podcast Bit-Rauschen: Weshalb es Alternativen zum UEFI-BIOS so schwer haben

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externer Podcast (Podigee GmbH) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Podigee GmbH) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Mehr von c't Magazin Mehr von c't Magazin

(ciw)