Afstandelijke kwetsbaarheid in de Shim-laag, waardoor UEFI Secure Boot kan worden omzeild

In de Shim-laag, die in de meeste Linux-distributies wordt gebruikt voor gecertificeerde opstart in UEFI Secure Boot-modus, is een kwetsbaarheid (CVE-2023-40547) aangetroffen die kan leiden tot uitvoer van op afstand code en het omzeilen van het gecertificeerde opstartmechanisme van UEFI Secure Boot. Een aanvaller die de HTTP-server controleert waar Shim verbinding mee maakt, kan een speciaal geformateerd antwoord terugsturen dat leidt tot een gecontroleerde schrijfactie buiten de buffer om code uit te voeren in een vroeg stadium van de opstart.

De kwetsbaarheid wordt veroorzaakt door een fout in de code voor het laden van bestanden via HTTP, die zich manifesteert bij het verwerken van onjuiste antwoorden die door de HTTP-server worden teruggestuurd waar shim verbinding mee maakt. De HTTPBoot-modus in Shim is sinds 2016 ondersteund en maakt opstarten via het netwerk mogelijk, waarbij het HTTP-protocol wordt gebruikt om het bestand van de opstartlader te verkrijgen dat in de volgende fase wordt aangeroepen. Shim reserveert bij het laden van bestanden via HTTP een buffer voor de ontvangen gegevens, rekening houdend met de grootte die in de HTTP-header 'Content-Length' is opgegeven, niet de werkelijke grootte van de gegevens. Bijgevolg kan door een kleiner waarde in de Content-Length-header terug te geven, worden bereikt dat de staart van het verzoek wordt geschreven naar geheugen buiten de buffer.

Shim is digitaal ondertekend door Microsoft en verifieert GRUB2 met zijn eigen certificaat, zodat ontwikkelaars van distributies niet elk update van de kernel en GRUB door Microsoft hoeven te laten ondertekenen. De kwetsbaarheid in Shim biedt de mogelijkheid om in de vertrouwenskette te infiltreren in de actieve Secure Boot-modus en volledige controle te krijgen over het verdere opstartproces, bijvoorbeeld om een ander OS op te starten, componenten van het besturingssysteem te wijzigen en de Lockdown-bescherming te omzeilen.

De kwetsbaarheid is verholpen in Shim-versie 15.8, maar om de aanval via Shim volledig te blokkeren, is goedkeuring van de nieuwe versie door Microsoft vereist en moet deze in de distributies worden opgenomen. De status van de kwetsbaarheid in de distributies kan worden beoordeeld op de volgende pagina's: Debian, Ubuntu, SUSE, RHEL, Fedora. Het probleem is dat zonder het intrekken van de ondertekening van de oude versie de oplossing zinloos is, aangezien een aanvaller een opstartmedium met de kwetsbare versie van Shim kan gebruiken om UEFI Secure Boot te compromitteren. Maar het intrekken van de ondertekening zou leiden tot een onmogelijkheid om de distributies te verifiëren die de oude versie van Shim blijven gebruiken.

Om de kwetsbaarheid te blokkeren zonder de digitale handtekening in te trekken, kunnen distributies het SBAT-mechanisme (UEFI Secure Boot Advanced Targeting) gebruiken, dat wordt ondersteund voor GRUB2, shim en fwupd in de meeste populaire Linux-distributies. SBAT is in samenwerking met Microsoft ontwikkeld en houdt in dat aanvullende metadata, die informatie bevat over de fabrikant, het product, de component en de versie, worden toegevoegd aan de uitvoerbare bestanden van UEFI-componenten. Deze metadata worden digitaal ondertekend en kunnen afzonderlijk worden opgenomen in lijsten van goedgekeurde of geblokkeerde componenten voor UEFI Secure Boot.

SBAT maakt het mogelijk om het gebruik van digitale handtekeningen voor specifieke versienummers van componenten te blokkeren zonder dat hiervoor de sleutels voor Secure Boot moeten worden ingetrokken. Het blokkeren van kwetsbaarheden via SBAT vereist geen gebruik van de lijst met ingetrokken UEFI-certificaten (dbx), maar gebeurt op het niveau van het vervangen van de interne sleutel voor het genereren van handtekeningen en het bijwerken van GRUB2, shim en andere door distributies geleverde opstartartefacten.

Naast de besproken kwetsbaarheid in Shim 15.8 zijn er ook verschillende minder gevaarlijke problemen verholpen die lokaal konden worden uitgebuit:

  • CVE-2023-40548 — een integer overflow in de functie verify_sbat_section, wat leidt tot een buffer overflow op 32-bits systemen.
  • CVE-2023-40546 — het lezen uit een geheugenruimte buiten de buffer tijdens het weergeven van foutmeldingen via de functie LogError().
  • CVE-2023-40549 — het lezen uit een geheugenruimte buiten de buffer tijdens de verwerking in de functie verify_buffer_authenticode() van een speciaal opgemaakt PE-bestand.
  • CVE-2023-40550 — het lezen uit een geheugenruimte buiten de buffer in de functie verify_buffer_sbat().
  • CVE-2023-40551 — het lezen uit een geheugenruimte buiten de buffer tijdens de parsing van MZ-bestanden.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster