Byly zveřejněny informace o dvou zranitelnostech v zavaděči GRUB2, které mohou vést k vykonání kódu při použití speciálně upravených písem a zpracování určitých Unicode sekvencí. Zranitelnosti mohou být použity k obcházení mechanismu ověřeného spuštění UEFI Secure Boot.
Zjištěné zranitelnosti:
- CVE-2022-2601 — přetečení zásobníku ve funkci grub_font_construct_glyph() při zpracování speciálně upravených písem ve formátu pf2, vznikající z nesprávného výpočtu parametru max_glyph_size a přidělení oblasti paměti, která je záměrně menší, než je potřeba pro uložení glyfů.
- CVE-2022-3775 — zápis za hranice přidělené oblasti paměti při vykreslování některých sekvencí Unicode speciálně upraveným písmem. Problém je přítomen v kodu pro zpracování písem a je způsoben nedostatkem řádných kontrol shody šířky a výšky glyfu se stávající bitmapou. Útočník může vybrat vstup tak, aby vyvolal zápis datového konce za hranice přiděleného zásobníku. Všímáno je, že, přestože je obtížné zneužití této zranitelnosti, není vyloučeno, že by problémy mohly vést k vykonání kódu.
Oprava byla zveřejněna ve formě opravy. Stav odstranění zranitelností v distribucích lze posoudit na těchto stránkách: Ubuntu, SUSE, RHEL, Fedora, Debian. Pro vyřešení problémů v GRUB2 nestačí jen aktualizovat balíček, bude také nutné vytvořit nové interní digitální podpisy a aktualizovat instalátory, zavaděče, balíčky jádra, fwupd firmware a shim vrstvy.
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, která je ověřena digitálním podpisem Microsoftu. Tato vrstva ověřuje GRUB2 vlastními certifikáty, což umožňuje vývojářům distribucí neověřovat každou aktualizaci jádra a GRUB u Microsoftu. Zranitelnosti v GRUB2 umožňují dosáhnout vykonávání vlastního kódu ve fázi po úspěšném ověření shim, ale před spuštěním operačního systému, což se proklíná do řetězce důvěry v aktivním režimu Secure Boot a získává plnou kontrolu nad dalším procesem zavádění, včetně zavádění jiného OS, modifikace komponentů operačního systému a obcházení ochrany Lockdown.
Pro zablokování zranitelnosti bez odvolání digitálního podpisu mohou distribuce použít mechanismus SBAT (UEFI Secure Boot Advanced Targeting), jehož podpora byla implementována pro GRUB2, shim a fwupd ve většině populárních distribucí Linuxu. SBAT byl vyvinut ve spolupráci s Microsoftem a zahrnuje přidání dalších metadat do spustitelných souborů komponent UEFI, která obsahují informace o výrobci, produktu, komponentě a verzi. Uvedená metadata jsou digitálně podepsána a mohou být samostatně zařazena do seznamů povolených nebo zakázaných komponent pro UEFI Secure Boot.
SBAT umožňuje zablokovat používání digitálního podpisu pro jednotlivé verze komponent bez nutnosti revokace klíčů pro Secure Boot. Blokování zranitelností prostřednictvím SBAT nevyžaduje použití seznamu odvolaných certifikátů UEFI (dbx), a probíhá na úrovni výměny interního klíče pro generování podpisů a aktualizaci GRUB2, shim a dalších dodávaných distribučních bootovacích artefaktů. Před zavedením SBAT bylo aktualizování seznamu odvolaných certifikátů (dbx, UEFI Revocation List) povinným předpokladem pro úplné zablokování zranitelnosti, protože útočník, bez ohledu na používaný operační systém, mohl k kompromitaci UEFI Secure Boot použít bootovací médium se starou zranitelnou verzí GRUB2, ověřenou digitálním podpisem.
Zdroj: opennet.ru
