Ťažko opraviteľné chyby v GRUB2, ktoré vám umožňujú obísť UEFI Secure Boot

Boli zverejnené informácie o 8 zraniteľnostiach v zavádzači GRUB2, ktoré vám umožňujú obísť mechanizmus UEFI Secure Boot a spustiť neoverený kód, napríklad implementovať malvér bežiaci na úrovni zavádzača alebo jadra.

Pripomeňme, že vo väčšine linuxových distribúcií sa na overené bootovanie v režime UEFI Secure Boot používa malá shim vrstva, digitálne podpísaná spoločnosťou Microsoft. Táto vrstva overuje GRUB2 pomocou vlastného certifikátu, ktorý vývojárom distribúcie umožňuje, aby nemali každú aktualizáciu jadra a GRUB certifikovanú spoločnosťou Microsoft. Zraniteľnosť v GRUB2 vám umožňuje dosiahnuť spustenie vášho kódu vo fáze po úspešnom overení shim, ale pred načítaním operačného systému, zaklinenie do reťazca dôveryhodnosti, keď je aktívny režim Secure Boot a získanie plnej kontroly nad ďalším procesom zavádzania, vrátane načítanie iného OS, úprava systému komponentov operačného systému a obídenie Lockdown ochrany.

Rovnako ako v prípade minuloročnej zraniteľnosti BootHole, aktualizácia bootloadera nestačí na zablokovanie problému, pretože útočník, bez ohľadu na použitý operačný systém, môže použiť bootovacie médium so starou, digitálne podpísanou, zraniteľnou verziou GRUB2 na kompromitáciu UEFI Secure Boot. Problém sa dá vyriešiť len aktualizáciou zoznamu zrušených certifikátov (dbx, UEFI Revocation List), no v tomto prípade sa stratí možnosť používať staré inštalačné médium s Linuxom.

V systémoch s firmvérom, ktorý má aktualizovaný zoznam zrušených certifikátov, je možné v režime UEFI Secure Boot načítať iba aktualizované zostavy distribúcií Linuxu. Distribúcie budú musieť aktualizovať inštalačné programy, zavádzače, balíky jadra, firmvér fwupd a vrstvu shim a vygenerovať pre ne nové digitálne podpisy. Používatelia budú musieť aktualizovať inštalačné obrazy a iné zavádzacie médiá, ako aj načítať zoznam zrušených certifikátov (dbx) do firmvéru UEFI. Pred aktualizáciou dbx na UEFI zostáva systém zraniteľný bez ohľadu na inštaláciu aktualizácií v OS. Stav zraniteľností je možné posúdiť na týchto stránkach: Ubuntu, SUSE, RHEL, Debian.

Na riešenie problémov, ktoré vznikajú pri distribúcii zrušených certifikátov, sa v budúcnosti plánuje použiť mechanizmus SBAT (UEFI Secure Boot Advanced Targeting), ktorého podpora bola implementovaná pre GRUB2, shim a fwupd a počnúc ďalšími aktualizáciami bude používa namiesto funkcií poskytovaných balíkom dbxtool. SBAT bol vyvinutý v spolupráci so spoločnosťou Microsoft a zahŕňa pridávanie nových metadát do spustiteľných súborov komponentov UEFI, ktoré zahŕňajú informácie o výrobcovi, produkte, komponente a verzii. Uvedené metadáta sú certifikované digitálnym podpisom a môžu byť navyše zahrnuté do zoznamov povolených alebo zakázaných komponentov pre UEFI Secure Boot. SBAT vám teda umožní manipulovať s číslami verzií komponentov počas odvolania bez potreby regenerácie kľúčov pre Secure Boot a bez generovania nových podpisov pre jadro, shim, grub2 a fwupd.

Identifikované slabé miesta:

  • CVE-2020-14372 – Pomocou príkazu acpi v GRUB2 môže privilegovaný používateľ na lokálnom systéme načítať upravené tabuľky ACPI umiestnením tabuľky SSDT (Secondary System Description Table) do adresára /boot/efi a zmenou nastavení v grub.cfg. Aj keď je aktívny režim Secure Boot, navrhované SSDT spustí jadro a možno ho použiť na zakázanie ochrany LockDown, ktorá blokuje cesty obchádzania UEFI Secure Boot. Výsledkom je, že útočník môže dosiahnuť načítanie svojho modulu jadra alebo spustenie kódu prostredníctvom mechanizmu kexec bez kontroly digitálneho podpisu.
  • CVE-2020-25632 je prístup do pamäte bez použitia po uvoľnení pri implementácii príkazu rmmod, ku ktorému dochádza pri pokuse o uvoľnenie ľubovoľného modulu bez zohľadnenia s ním spojených závislostí. Zraniteľnosť nevylučuje vytvorenie zneužitia, ktoré by mohlo viesť k spusteniu kódu obídeniu overenia Secure Boot.
  • CVE-2020-25647 Neobmedzený zápis vo funkcii grub_usb_device_initialize() volanej pri inicializácii zariadení USB. Problém je možné zneužiť pripojením špeciálne pripraveného USB zariadenia, ktoré produkuje parametre, ktorých veľkosť nezodpovedá veľkosti vyrovnávacej pamäte pridelenej pre USB štruktúry. Útočník môže manipuláciou so zariadeniami USB dosiahnuť spustenie kódu, ktorý nie je overený v Secure Boot.
  • CVE-2020-27749 je pretečenie vyrovnávacej pamäte vo funkcii grub_parser_split_cmdline(), ktoré môže byť spôsobené zadaním premenných väčších ako 2 KB na príkazovom riadku GRUB1. Táto chyba zabezpečenia umožňuje spusteniu kódu obísť Secure Boot.
  • CVE-2020-27779 – Príkaz cutmem umožňuje útočníkovi odstrániť rozsah adries z pamäte a obísť tak Secure Boot.
  • CVE-2021-3418 – Zmeny v shim_lock vytvorili ďalší vektor na využitie minuloročnej zraniteľnosti CVE-2020-15705. Inštaláciou certifikátu používaného na podpisovanie GRUB2 v dbx umožnil GRUB2 načítať akékoľvek jadro priamo bez overenia podpisu.
  • CVE-2021-20225 - Možnosť zápisu údajov mimo hraníc pri spúšťaní príkazov s veľmi veľkým počtom možností.
  • CVE-2021-20233 - Možnosť zápisu údajov mimo hraníc z dôvodu nesprávneho výpočtu veľkosti vyrovnávacej pamäte pri použití úvodzoviek. Pri výpočte veľkosti sa predpokladalo, že na uniknutie jednej úvodzovky sú potrebné tri znaky, zatiaľ čo v skutočnosti boli potrebné štyri.

Zdroj: opennet.ru

Pridať komentár