Kwetsbaarheid van GRUB2 UEFI SecureBoot - 'Opstartlek BootHole'

Ontwikkelaars binnen Debian en elders in de Linux-gemeenschap zijn zich onlangs bewust geworden van een ernstig probleem in het GRUB2-opstartprogramma waardoor iemand met slechte bedoelingen UEFI Secure Boot (UEFI veilige opstart) volledig kan omzeilen. Alle details van het probleem worden beschreven in Debian beveiligingsadvies 4735. Het doel van dit document is uitleggen wat de gevolgen zijn van deze veiligheidskwetsbaarheid en welke stappen gezet werden om deze aan te pakken.

Achtergrond: Wat is UEFI Secure Boot?

UEFI Secure Boot (SB - UEFI veilige opstart) is een verificatiemechanisme dat moet verzekeren dat de code die door de UEFI firmware van een computer gelanceerd wordt, te vertrouwen is. Het is ontworpen om het systeem te beschermen tegen het laden en uitvoeren van kwaadaardige code vroegtijdig in het opstartproces, nog voordat het besturingssysteem geladen wordt.

SB werkt met cryptografische controlesommen en handtekeningen. Elk programma dat door de firmware geladen wordt heeft een handtekening en een controlesom en voordat de uitvoering van het programma toegestaan wordt, zal de firmware nagaan of het betrouwbaar is door de geldigheid van de controlesom en de handtekening te controleren. Wanneer SB op het systeem geactiveerd is, zal een poging om een onbetrouwbaar programma uit te voeren niet toegestaan worden. Dit voorkomt het uitvoeren van onverwachte/ongeoorloofde code in een UEFI-omgeving.

De meeste x86-hardware wordt door de fabrikant geleverd met Microsoft-sleutels. Dit betekent dat de firmware op deze systemen binaire code zal vertrouwen die ondertekend werd door Microsoft. De meeste moderne systemen worden geleverd met een geactiveerd SB-systeem - standaard zullen zij geen niet-ondertekende code uitvoeren, maar het is mogelijk om de firmware-configuratie aam te passen om SB uit te schakelen of om extra ondertekeningssleutels op te nemen.

Zoals veel op Linux gebaseerde besturingssystemen, gebruikt Debian het programma shim om dat vertrouwen van de firmware uit te breiden naar de andere programma's die beveiligd moeten worden tijdens de vroege stadia van het opstartproces: de GRUB2-bootloader, de Linux-kernel en hulpmiddelen voor het opwaarderen van firmware (fwupd en fwupdate).

Meerdere bugs aangetroffen in GRUB2

Jammer genoeg werd een ernstige bug aangetroffen in de code van de GRUB2-bootloader die de configuratie (grub.cfg) leest en ontleedt. Deze bug verbreekt de vertrouwensketen. Door het exploiteren van deze bug wordt het mogelijk uit de beveiligde omgeving uit te breken en niet-ondertekende programma's te laden tijdens de eerste fases van het opstartproces. Deze kwetsbaarheid werd ontdekt door onderzoekers van Eclypsium en zij gaven het de naam BootHole.

In plaats van enkel deze ene bug te repareren, werden ontwikkelaars aangespoord om een diepgaande audit van de broncode van GRUB2 uit te voeren. Het ware onverantwoord geweest om enkel één belangrijk probleem op te lossen zonder ook op zoek te gaan naar mogelijke andere problemen. Een team van ingenieurs heeft verschillende weken samengewerkt om een reeks andere problemen te identificeren en op te lossen. We hebben een paar plaatsen gevonden waar interne geheugentoewijzingen kunnen overlopen bij onverwachte invoer, ook een aantal plaatsen waar gehele getallen in wiskundige berekeningen zouden kunnen overlopen en problemen zouden kunnen veroorzaken en enkele plaatsen waar geheugen kan worden gebruikt nadat het is vrijgegeven. Oplossingen voor al deze problemen werden binnen de gemeenschap uitgewisseld en getest.

Nogmaals, raadpleeg Debian beveiligingsadvies 4735 voor een volledige lijst van aangetroffen problemen.

Ook in Linux werden bugs aangetroffen

Tijdens het bespreken van de GRUB2-gebreken, spraken ontwikkelaars ook over twee sluipwegen die onlangs aangetroffen en gerepareerd werden door Jason A. Donenfeld (zx2c4) (1, 2), waarbij ook Linux mogelijk het omzeilen van Secure Boot zou toelaten. Deze twee sluipwegen laten de systeembeheerder toe op een vergrendeld systeem ACPI-tabellen te vervangen, waar dit niet zou mogen. Reparaties voor deze problemen werden reeds uitgebracht.

Er moeten sleutels ingetrokken worden om de Secure-Boot-keten te repareren

Debian en andere leveranciers van besturingssystemen zullen ongetwijfeld gerepareerde versies uitbrengen van GRUB2 en Linux. Dit houdt echter geen volledige reparatie in van de hier gesignaleerde problemen. Kwaadwillige personen zouden nog steeds gebruik kunnen maken van oudere versies van deze programma's om Secure Boot te omzeilen..

Om dat te stoppen, is de volgende stap dat Microsoft die onveilige binaire bestanden blokkeert om te voorkomen dat ze onder SB worden uitgevoerd. Dit is mogelijk via de DBX-lijst, een functionaliteit van het UEFI Secure Boot-ontwerp. Aan alle Linux-distributies die door Microsoft ondertekende versies van shim bevatten, werd gevraagd details over te maken van de betreffende programma's en sleutels om dit proces te faciliteren. Het bestand met de lijst van UEFI-intrekkingen zal bijgewerkt worden om deze informatie op te nemen. Op een bepaald moment in de toekomst zullen systemen deze bijgewerkte lijst beginnen gebruiken en weigeren de kwetsbare programma's nog langer onder Secure Boot uit te voeren.

De exacte tijdlijn voor het ontplooien van deze aanpassingen is nog niet bekend. Ergens in de toekomst zullen BIOS/UEFI-leveranciers deze nieuwe lijst met intrekkingen beginnen gebruiken in recentere firmware-versies voor nieuwe hardware. Mogelijk zal ook Microsoft updates uitbrengen voor bestaande systemen via Windows Update. Mogelijk zullen bepaalde Linux-distributies updates uitbrengen via hun eigen proces van beveiligingsupdates. Momenteel doet Debian dat nog niet, maar we bekijken het voor de toekomst.

Welke effecten heeft het intrekken van de sleutels?

De meeste leveranciers wantrouwen het automatisch toepassen van updates die sleutels intrekken die voor Secure Boot worden gebruikt. Voor SB geschikt gemaakte bestaande software-installaties zouden mogelijk plots helemaal niet meer kunnen opstarten, tenzij de gebruiker er zorg voor gedragen heeft om ook alle nodige software-updates te installeren. Windows/Linux dual-bootsystemen zouden plots niet meer in staat kunnen zijn om Linux op te starten. Ook oude installaties en live-systemen zouden niet langer kunnen opstarten, wat het potentieel moeilijker zou maken om systemen te herstellen.

Er zijn twee voor de hand liggende manieren om een dergelijk niet-opstartend systeem te repareren:

Beide mogelijkheden kunnen eenvoudig lijken, maar allebei kunnen ze tijdrovend zijn voor gebruikers die verschillende systemen moeten onderhouden. U dient ook te weten dat voor het uit- en aanzetten van Secure Boot rechtstreekse toegang tot de machine nodig is. Dit is zo bedoeld. Normaal is het onmogelijk om deze configuratie aan te passen buiten het instellingenprogramma van de firmware om. Net om deze reden dient men mogelijk extra zorg te besteden aan servercomputers die op een andere locatie staan.

Om deze redenen wordt alle Debian-gebruikers ten zeerste aanbevolen ervoor te zorgen dat alle aanbevolen updates zo snel mogelijk op hun systeem geïnstalleerd worden om de kans op problemen in de toekomst te verkleinen.

Bijgewerkte pakketten

Opmerking: Systemen met Debian 9 (stretch) of ouder zullen hier niet noodzakelijk updates krijgen, omdat Debian 10 (buster) de eerste release van Debian was met ingebouwde ondersteuning voor UEFI Secure Boot.

De ondertekende versies van alle pakketten hier werden bijgewerkt, ook indien er geen andere aanpassingen nodig waren. Debian heeft een nieuw(e) ondertekeningssleutel/certificaat moeten genereren voor zijn eigen Secure Boot-pakketten. Het oude certificaat had het label Debian Secure Boot Signer (vingerafdruk f156d24f5d4e775da0e6a9111f074cfce701939d688c64dba093f97753434f2c); het nieuwe certificaat is Debian Secure Boot Signer 2020 (3a91a54f9f46a720fe5bbd2390538ba557da0c2ed5286f5351fe04fff254ec31).

Er zijn vijf broncodepakketten in Debian die zullen worden bijgewerkt vanwege de hier beschreven UEFI Secure Boot-wijzigingen:

1. GRUB2

Bijgewerkte versies van de GRUB2-pakketten van Debian zijn nu beschikbaar via het archief debian-security van de stabiele release Debian 10 (buster). Zeer binnenkort zullen gerepareerde versies voor de ontwikkelingsversies van Debian (unstable en testing) beschikbaar zijn in het normale Debian archief.

2. Linux

Bijgewerkte versies van de linux-pakketten van Debian zijn nu beschikbaar via het archief buster-proposed-updates van de stabiele release Debian 10 (buster) en deze zullen opgenomen worden in de aanstaande tussenrelease 10.5. Ook in het Debian-archief voor de ontwikkelingsversies van Debian (unstable en testing) zijn nieuwe pakketten aanwezig. We hopen tevens binnenkort gerepareerde pakketten te kunnen uploaden naar buster-backports.

3. Shim

Vanwege de manier waarop Debian's Secure Boot-sleutelbeheer werkt, hoeft Debian zijn bestaande door Microsoft ondertekende shim-pakketten niet in te trekken. De ondertekende versies van de shim-helper-pakketten moesten echter opnieuw gebouwd worden om gebruik te maken van de nieuwe ondertekeningssleutel.

Er zijn nu via buster-proposed-updates bijgewerkte versies van de shim-pakketten van Debian beschikbaar voor de stabiele release Debian 10 (buster) en deze zullen opgenomen worden in de aanstaande tussenrelease 10.5. Ook in het Debian-archief voor ontwikkelingsversies (unstable en testing) zijn nieuwe pakketten beschikbaar.

4. Fwupdate

Er zijn nu via buster-proposed-updates bijgewerkte versies van de fwupdate-pakketten van Debian beschikbaar voor de stabiele release Debian 10 (buster) en deze zullen opgenomen worden in de aanstaande tussenrelease 10.5. Reeds een tijd geleden werd fwupdate verwijderd uit unstable en testing ten gunste van fwupd.

5. Fwupd

Er zijn nu via buster-proposed-updates bijgewerkte versies van de fwupd-pakketten van Debian beschikbaar voor de stabiele release Debian 10 (buster) en deze zullen opgenomen worden in de aanstaande tussenrelease 10.5. Ook in het Debian-archief voor ontwikkelingsversies (unstable en testing) zijn nieuwe pakketten beschikbaar.

Tussenrelease Debian 10.5 (buster), bijgewerkte installatie- en live-media

Het is de bedoeling dat alle hier beschreven oplossingen opgenomen worden in de tussenrelease Debian 10.5 (buster), welke gepland is voor 1 augustus. Om die reden is 10.5 een goede keuze voor gebruikers die op zoek zijn naar Debian installatie en live-media. Het is mogelijk dat eerdere versies niet langer zullen werken met Secure Boot wanneer de sleutelintrekkingen uitgevoerd worden.

Meer informatie

Veel meer informatie over hoe UEFI Secure Boot opgezet is in Debian, is te vinden in de wiki-pagina's van Debian - zie https://wiki.debian.org/SecureBoot.

Andere informatiebronnen over dit onderwerp zijn onder meer: