V zavádzači GRUB2 bolo odstránených 7 zraniteľností, ktoré umožňujú obísť mechanizmus UEFI Secure Boot a spustiť neoverený kód, napríklad umožniť nasadenie malvéru, ktorý funguje na úrovni zavádzača alebo jadra. Ďalej bola zaznamenaná jedna zraniteľnosť v medzivrstve shim, ktorá taktiež umožňuje obísť UEFI Secure Boot. Skupina zraniteľností dostala kódové meno Boothole 3, podobne ako predchádzajúce problémy, ktoré boli identifikované v zavádzači.
Na odstránenie problémov v GRUB2 a shim budú distribúcie môcť využiť mechanizmus SBAT (UEFI Secure Boot Advanced Targeting), ktorého podpora bola implementovaná pre GRUB2, shim a fwupd. SBAT bol vyvinutý spoločne s Microsoftom a predpokladá pridanie do vykonateľných súborov komponentov UEFI dodatočných metadát, ktoré obsahujú informácie o výrobcovi, produkte, komponente a verzii. Tieto metadáta sú digitálne podpísané a môžu byť samostatne zahrnuté do zoznamov povolených alebo zakázaných komponentov pre UEFI Secure Boot.
Vo väčšine Linux distribúcií sa na overenú bootovanie v režime UEFI Secure Boot používa malá medzivrstva shim, digitálne podpísaná Microsoftom. Táto medzivrstva overuje GRUB2 svojím vlastným certifikátom, čo umožňuje vývojárom distribúcií neoverovať každú aktualizáciu jadra a GRUB v Microsoft. Zraniteľnosti v GRUB2 umožňujú dosiahnuť vykonanie svojho kódu v etape po úspešnej verifikácii shim, ale pred načítaním operačného systému, vniknúť do reťazca dôvery pri aktívnom režime Secure Boot a získať úplnú kontrolu nad ďalším procesom načítania, vrátane načítania iného OS, modifikácie komponentov operačného systému a obchádzania ochrany Lockdown.
Na odstránenie problémov v zavádzači budú distribúcie musieť vytvoriť nové interné digitálne podpísania a aktualizovať inštalátory, zavádzače, balíky s jadrom, fwupd firmvér a shim medzivrstvu. Pred zavedením SBAT bolo aktualizovanie zoznamu odvolaných certifikátov (dbx, UEFI Revocation List) povinnou podmienkou na úplné zablokovanie zraniteľnosti, pretože útočník, bez ohľadu na používaný operačný systém, mohol na kompromitáciu UEFI Secure Boot využiť spúšťacie médium so starou zraniteľnou verziou GRUB2, digitálne podpísanou.
Namiesto zrušenia podpisu SBAT umožňuje blokovať jeho použitie pre jednotlivé čísla verzií komponentov bez nutnosti zrušiť kľúče pre Secure Boot. Blokovanie zraniteľností prostredníctvom SBAT nevyžaduje použitie zoznamu zrušených certifikátov UEFI (dbx), ale prebieha na úrovni výmeny interného kľúča na generovanie podpisov a aktualizáciu GRUB2, shim a iných dodávaných distribučných zavádzacích artefaktov. V súčasnosti je podpora SBAT už pridaná vo väčšine populárnych distribúcií Linux.
Odhalené zraniteľnosti:
- CVE-2021-3696, CVE-2021-3695 - pretečenie zásobníka v heap pri spracovávaní špeciálne upravených PNG-obrázkov, ktoré teoreticky môžu byť použité na organizovanie vykonávania kódu útočníka a obídenie UEFI Secure Boot. Všimnite si, že problém je ťažko zneužiteľný, pretože na vytvorenie funkčného exploit-u je potrebné zohľadniť veľké množstvo faktorov a mať informácie o rozložení pamäte.
- CVE-2021-3697 - pretečenie cez dolnú hranicu zásobníka (buffer underflow) v kóde na spracovanie JPEG-obrázkov. Zneužitie problému si vyžaduje získanie informácií o rozložení pamäte a nachádza sa na približne rovnakej úrovni zložitosti ako problém s PNG (CVSS 7.5).
- CVE-2022-28733 - celistvostné pretečenie v funkcii grub_net_recv_ip4_packets(), umožňuje ovplyvniť parameter rsm->total_len prostredníctvom odosielania špeciálne upraveného IP-paketu. Problém je označený ako najnebezpečnejší z uvedených zraniteľností (CVSS 8.1). Pri úspešnom zneužití zraniteľnosť umožňuje zapísať dáta mimo hraníc zásobníka prostredníctvom alokácie neprimerane menšej pamäte.
- CVE-2022-28734 - jednobitové pretečenie zásobníka pri spracovaní oddelených HTTP-hlavičiek. Problém môže viesť k poškodeniu metadát GRUB2 (zapíše nulový byt hneď za koncom zásobníka) pri analýze špeciálne upravených HTTP-žiadostí.
- CVE-2022-28735 - problém vo verifikátore shim_lock, ktorý umožňuje načítať súbory, ktoré nie sú súčasťou jadra. Zraniteľnosť môže byť použitá na načítanie neschválených digitálne nepodpisovaných modulov jadra alebo nekontrolovaného kódu v režime UEFI Secure Boot.
- CVE-2022-28736 — prístup k už uvoľnenej oblasti pamäte vo funkcii grub_cmd_chainloader() cez opätovné spustenie príkazu chainloader, ktorý sa používa na načítanie operačných systémov, ktoré nie sú podporované v GRUB2. Zneužitie môže viesť k vykonaniu kódu útočníka, ak útočník dokáže určiť vlastnosti rozdelenia pamäte v GRUB2.
- CVE-2022-28737 — pretečenie vyrovnávacej pamäte v medzivrstve shim, ktoré sa vyskytuje vo funkcii handle_image() pri načítaní a vykonávaní špeciálne pripravených obrazov EFI.
Zdroj: opennet.ru
