Byly odhaleny informace o 8 zranitelnostech v bootloaderu GRUB2, které umožňují obcházet mechanismus UEFI Secure Boot a spustit neověřený kód, například zavést malware pracující na úrovni bootloaderu nebo jádra.
Připomínáme, že ve většině linuxových distribucí se pro ověřené spuštění v režimu UEFI Secure Boot používá malá vrstva shim, ověřená digitálním podpisem společnosti Microsoft. Tato vrstva ověřuje GRUB2 vlastním certifikátem, což umožňuje vývojářům distribucí neověřovat každou aktualizaci jádra a GRUB u Microsoftu. Zranitelnosti v GRUB2 umožňují provádění vlastního kódu v fázi po úspěšném ověření shim, ale před načtením operačního systému, a tím se vměšují do řetězce důvěry v aktivním režimu Secure Boot a získávají plnou kontrolu nad dalším procesem načítání, včetně načítání jiného OS, modifikace komponent operačního systému a obcházení ochrany Lockdown.
Stejně jako v případě loňské zranitelnosti BootHole, pouhé aktualizace bootloaderu nestačí k zablokování problému, protože útočník, bez ohledu na používaný operační systém, může pro kompromitaci UEFI Secure Boot použít spouštěcí médium se starou zranitelnou verzí GRUB2, ověřenou digitálním podpisem. Problém lze vyřešit pouze aktualizací seznamu odvolaných certifikátů (dbx, UEFI Revocation List), ale v tomto případě dojde ke ztrátě možnosti používat stará instalační média s Linuxem.
Na systémech s firmwary, v nichž byl aktualizován seznam odvolaných certifikátů, bude možné v režimu UEFI Secure Boot spustit pouze aktualizované verze linuxových distribucí. Distribucím bude vyžadováno aktualizovat instalátory, bootloadery, balíčky s jádry, fwupd firmwary a shim vrstvu, přičemž pro ně budou vygenerovány nové digitální podpisy. Uživatelé budou muset aktualizovat instalační obrazy a další spouštěcí média, stejně jako načíst seznam odvolaných certifikátů (dbx) do firmwaru UEFI. Do aktualizace dbx v UEFI zůstává systém zranitelný bez ohledu na to, zda jsou v OS nainstalovány aktualizace. Stav odstranění zranitelností lze hodnotit na následujících stránkách: Ubuntu, SUSE, RHEL, Debian.
K řešení problémů spojených s distribucí odvolaných certifikátů se v budoucnu plánuje využití mechanismu SBAT (UEFI Secure Boot Advanced Targeting), jehož podpora byla implementována pro GRUB2, shim a fwupd, a od následujících aktualizací bude používána místo funkcionality poskytované balíčkem dbxtool. SBAT byl vyvinut ve spolupráci se společností Microsoft a předpokládá přidání nových metadat do spustitelných souborů UEFI komponent, která obsahují informace o výrobci, produktu, komponentě a verzi. Uvedená metadata jsou podepsána digitálním podpisem a mohou být dále zahrnuta do seznamů povolených nebo zakázaných komponent pro UEFI Secure Boot. Takto SBAT umožní manipulovat s čísly verzí komponent po jejich odvolání, aniž by bylo nutné regenerovat klíče pro Secure Boot a vytvářet nové podpisy pro jádro, shim, grub2 a fwupd.
Zjištěné zranitelnosti:
- CVE-2020-14372 — pomocí příkazu acpi v GRUB2 může privilegovaný uživatel místního systému načíst modifikované tabulky ACPI, umístěním SSDT (Secondary System Description Table) do adresáře /boot/efi a změnou nastavení v grub.cfg. I přes aktivaci režimu Secure Boot bude navržený SSDT proveden jádrem a může být použit k deaktivaci ochrany LockDown, která blokuje cesty obcházení UEFI Secure Boot. Výsledkem může útočník získat možnost načíst svůj modul jádra nebo spustit kód prostřednictvím mechanismu kexec, aniž by byla prověřena digitální podpis.
- CVE-2020-25632 — přístup k již uvolněné oblasti paměti (use-after-free) v implementaci příkazu rmmod, což se projevuje při pokusu o načtení jakéhokoliv modulu bez zohlednění jeho závislostí. Zranitelnost nevylučuje možnost vytvoření exploitu, který může vést k provedení kódu obcházejícího verifikaci Secure Boot.
- CVE-2020-25647 — zápis mimo hranice bufferu ve funkci grub_usb_device_initialize(), která je volána při inicializaci USB zařízení. Problém může být zneužit připojením speciálně připraveného USB zařízení, které uvádí parametry, jejichž velikost neodpovídá velikosti bufferu vyhrazeného pro struktury USB. Útočník může dosáhnout provedení kódu, který není ověřen v Secure Boot, manipulacemi s USB zařízeními.
- CVE-2020-27749 — přetečení vyrovnávací paměti ve funkci grub_parser_split_cmdline(), které může být vyvoláno uvedením proměnných většími než 1 KB v příkazovém řádku GRUB2. Zranitelnost umožňuje provádění kódu obcházejícího Secure Boot.
- CVE-2020-27779 — příkaz cutmem umožňuje útočníkovi odstranit rozsah adres z paměti a tím obejít Secure Boot.
- CVE-2021-3418 — změny v shim_lock vytvořily další vektor pro zneužití loňské zranitelnosti CVE-2020-15705. Při instalaci certifikátu do dbx, který se používá k podepisování GRUB2, GRUB2 umožnil načíst jakékoli jádro přímo bez ověření podpisu.
- CVE-2021-20225 — možnost zápisu dat mimo vyrovnávací paměť při spuštění příkazů s velmi velkým počtem voleb.
- CVE-2021-20233 — možnost zápisu dat mimo vyrovnávací paměť kvůli chybnému výpočtu velikosti vyrovnávací paměti při použití uvozovek. Při výpočtu velikosti se předpokládalo, že pro escapování jednoduché uvozovky jsou potřeba tři znaky, ačkoli ve skutečnosti jsou potřeba čtyři.
Zdroj: opennet.ru
