Door experts zijn verschillende OpenSSL-versies die beveiligingslekken bevatten in een UEFI BIOS-update gevonden. Dit brengt logischerwijs wat risico’s met zich mee.
Ontvang gratis informatie en tips over cybersecurity, schrijf je in voor de nieuwsbrief van c’t:
Bewijs van Binarly
Meer dan 20 megabytes aan binaire code in een modern UEFI BIOS bevatten enkele honderden uitvoerbare (EFI) programma’s. Veel van deze binaire code bevat kwetsbaarheden, waarvan sommige al jaren bekend zijn. Experts van het bedrijf Binarly bewijzen dit aan de hand van een voorbeeld van een actuele BIOS-update voor een zakelijke laptop uit de Lenovo ThinkPad-serie.
De open source-tool OpenSSL
De oprichters van Binarly, Alex Matrosov en Claudiu Teodorescu, zochten in de binaire code van het BIOS naar varianten van de opensource-tool OpenSSL. OpenSSL wordt gebruikt in de EFI Design Kit II (EDK 2). De broncode hiervan ligt aan de basis van veel UEFI BIOS-implementaties, als een algemeen hulpmiddel voor cryptografische beveiligingsfuncties. De UEFI-codemodule Crypto Package (CryptoPkg) dient onder meer als wrapper voor OpenSSL-functies.
Overvloed aan OpenSSL-versies in UEFI BIOS
Een echt bestaand UEFI BIOS bevat echter UEFI-code en BLOB’s van verschillende bedrijven en leveranciers. En zulke BLOB’s zijn soms ouder of gebaseerd op oudere broncode.
De online service Virustotal.com kan bepaalde BIOS-images ‘ontleden’. Een korte test hiermee vond meer dan 600 individuele modules in een Lenovo BIOS-image.
In de onderzochte BIOS-image vonden de Binarly-experts in ieder geval 27 functies met drie verschillende OpenSSL-versies, die Lenovo ook levert via de Linux Vendor Firmware Service (LVFS). De meesten gebruikte OpenSSL 1.0.2j uit 2018, maar er waren er ook met OpenSSL 1.0.0a en 0.9.8zb uit 2014.
Oude beveiligingslekken nog niet verholpen in UEFI BIOS
Volgens Binarly zijn er in OpenSSL 0.9.8zb beveiligingslekken gevonden die al ruim acht jaar bekend zijn. Ironisch genoeg wordt de module “InfineonTpmUpdateDxe” met deze OpenSSL-versie waarschijnlijk gebruikt om firmware-updates te importeren voor de Trusted Platform Module (TPM). Deze firmware-updates zijn bestemd voor de beveiligingschip die dient als hardware-anker (root of trust) voor belangrijke beveiligingsfuncties.
UEFI-codemodules met OpenSSL-versies volgens Binarly
UEFI-codemodules | OpenSSL-versie |
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-initialisatie, PEIM = Pre-EFI-initialisatiemodule |
Het onderhouden van UEFI firmware
Volgens Binarly is de OpenSSL-versieverwarring in een echte BIOS-update slechts een van de vele voorbeelden van het feit dat het algemene concept voor het onderhouden van (UEFI) firmware niet werkt. Hierdoor worden bekende beveiligingslacunes soms jarenlang niet gedicht.
Het is niet de eerste keer dat er veiligheidslekken zijn in een UEFI BIOS, zoals we eerder berichtten. In c’t 12/2022 gaan we uitgebreid in op de risico’s en op alternatieven voor UEFI.