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?
- Meerdere bugs aangetroffen in GRUB2
- Ook in Linux werden bugs aangetroffen
- Er moeten sleutels ingetrokken worden om de Secure-Boot-keten te repareren
- Welke effecten heeft het intrekken van de sleutels?
- Bijgewerkte pakketten
- Debian tussenrelease 10.5 (
buster
) met bijgewerkte installatie- en live-media - Meer informatie
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 controlegetallen en handtekeningen. Elk programma dat door de firmware geladen wordt heeft een handtekening en een controlegetal en voordat de uitvoering van het programma toegestaan wordt, zal de firmware nagaan of het betrouwbaar is door de geldigheid van het controlegetal 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 aan 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:
- Herstarten in
rescue
-modus (reparatiemodus) met recentere installatiemedia en de noodzakelijke updates op die manier toepassen; of - Secure Boot tijdelijk uitzetten om opnieuw toegang te krijgen tot het systeem, de updates toepassen en dan Secure Boot opnieuw aanzetten.
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 intrekkingen van de sleutels
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:
- Het artikel
BootHole
van Eclypsium, met een beschrijving van de aangetroffen kwetsbaarheden. - Microsoft richtlijnen voor de aanpak van omzeilingen van de beveiliging in GRUB
- Artikel uit de Ubuntu KnowledgeBase
- Artikel van Red Hat over de kwetsbaarheid
- Artikel van SUSE over de kwetsbaarheid