Těžko opravitelné zranitelnosti v GRUB2, které vám umožňují obejít UEFI Secure Boot

Byly zveřejněny informace o 8 zranitelnostech v bootloaderu GRUB2, které umožňují obejít mechanismus UEFI Secure Boot a spouštět neověřený kód, například implementovat malware běžící na úrovni bootloaderu nebo jádra.

Připomeňme, že ve většině linuxových distribucí se pro ověřené spouštění v režimu UEFI Secure Boot používá malá vrstva shim, digitálně podepsaná Microsoftem. Tato vrstva ověřuje GRUB2 pomocí vlastního certifikátu, který vývojářům distribuce umožňuje nemít každou aktualizaci jádra a GRUB certifikovanou společností Microsoft. Zranitelnosti v GRUB2 vám umožňují dosáhnout spuštění vašeho kódu ve fázi po úspěšném ověření shim, ale před načtením operačního systému, zaklínění se do řetězce důvěry, když je aktivní režim Secure Boot a získání plné kontroly nad dalším procesem spouštění, včetně načtení jiného OS, úprava systému komponent operačního systému a obejití Lockdown ochrany.

Stejně jako u loňské zranitelnosti BootHole nestačí k zablokování problému aktualizace zavaděče, protože útočník, bez ohledu na použitý operační systém, může použít zaváděcí médium se starou digitálně podepsanou zranitelnou verzí GRUB2 ke kompromitaci UEFI Secure Boot. Problém lze vyřešit pouze aktualizací seznamu zneplatněný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 firmwarem, který má aktualizovaný seznam odvolaných certifikátů, lze v režimu UEFI Secure Boot načíst pouze aktualizované sestavení distribucí Linuxu. Distribuce budou muset aktualizovat instalační programy, zavaděče, balíčky jádra, firmware fwupd a vrstvu shim a generovat pro ně nové digitální podpisy. Uživatelé budou muset aktualizovat instalační obrazy a další zaváděcí média a také načíst seznam zrušených certifikátů (dbx) do firmwaru UEFI. Před aktualizací dbx na UEFI zůstává systém zranitelný bez ohledu na instalaci aktualizací v OS. Stav zranitelnosti lze posoudit na těchto stránkách: Ubuntu, SUSE, RHEL, Debian.

Pro řešení problémů, které vznikají při distribuci zneplatněných certifikátů, se v budoucnu plánuje použití mechanismu SBAT (UEFI Secure Boot Advanced Targeting), jehož podpora byla implementována pro GRUB2, shim a fwupd a počínaje dalšími aktualizacemi bude používá místo funkcí poskytovaných balíčkem dbxtool. SBAT byl vyvinut společně se společností Microsoft a zahrnuje přidávání nových metadat do spustitelných souborů komponent UEFI, které zahrnují informace o výrobci, produktu, komponentě a verzi. Zadaná metadata jsou certifikována digitálním podpisem a mohou být navíc zahrnuta do seznamů povolených nebo zakázaných součástí pro UEFI Secure Boot. SBAT vám tedy umožní během odvolání manipulovat s čísly verzí komponent, aniž byste museli znovu generovat klíče pro Secure Boot a bez generování nových signatur pro jádro, shim, grub2 a fwupd.

Zjištěná zranitelnost:

  • CVE-2020-14372 – Pomocí příkazu acpi v GRUB2 může privilegovaný uživatel na lokálním systému načíst upravené tabulky ACPI umístěním tabulky SSDT (Secondary System Description Table) do adresáře /boot/efi a změnou nastavení v grub.cfg. Přestože je aktivní režim Secure Boot, navrhované SSDT bude spuštěno jádrem a lze jej použít k deaktivaci ochrany LockDown, která blokuje cesty obcházení UEFI Secure Boot. Výsledkem je, že útočník může dosáhnout načtení svého modulu jádra nebo spuštění kódu prostřednictvím mechanismu kexec, aniž by musel kontrolovat digitální podpis.
  • CVE-2020-25632 je přístup k paměti bez použití po uvolnění při implementaci příkazu rmmod, ke kterému dochází při pokusu o uvolnění libovolného modulu bez zohlednění závislostí s ním spojených. Tato chyba zabezpečení nevylučuje vytvoření zneužití, které by mohlo vést ke spuštění kódu, který by obešel ověření Secure Boot.
  • CVE-2020-25647 Omezený zápis ve funkci grub_usb_device_initialize() volané při inicializaci zařízení USB. Problém lze zneužít připojením speciálně připraveného USB zařízení, které produkuje parametry, jejichž velikost neodpovídá velikosti vyrovnávací paměti alokované pro USB struktury. Útočník může manipulací se zařízeními USB dosáhnout spuštění kódu, který není ověřen v Secure Boot.
  • CVE-2020-27749 je přetečení vyrovnávací paměti ve funkci grub_parser_split_cmdline(), které může být způsobeno zadáním proměnných větších než 2 kB na příkazovém řádku GRUB1. Tato chyba zabezpečení umožňuje spuštění kódu obejít zabezpečené spouštění.
  • CVE-2020-27779 – Příkaz cutmem umožňuje útočníkovi odstranit rozsah adres z paměti a obejít tak zabezpečené spouštění.
  • CVE-2021-3418 – Změny v shim_lock vytvořily další vektor pro využití loňské zranitelnosti CVE-2020-15705. Instalací certifikátu používaného k podepisování GRUB2 do dbx umožnil GRUB2 načíst jakékoli jádro přímo bez ověření podpisu.
  • CVE-2021-20225 - Možnost zápisu dat mimo hranice při spouštění příkazů s velmi velkým počtem možností.
  • CVE-2021-20233 - Možnost zápisu dat mimo meze z důvodu nesprávného výpočtu velikosti vyrovnávací paměti při použití uvozovek. Při výpočtu velikosti se předpokládalo, že k uvození jediné uvozovky jsou zapotřebí tři znaky, zatímco ve skutečnosti byly vyžadovány čtyři.

Zdroj: opennet.ru

Přidat komentář