Chyby zabezpečenia v GRUB2, ktoré môžu obísť UEFI Secure Boot

V bootloaderi GRUB2 bolo opravených 7 zraniteľností, ktoré vám umožňujú obísť mechanizmus UEFI Secure Boot a spustiť neoverený kód, napríklad zaviesť malvér bežiaci na úrovni bootloadera alebo jadra. Okrem toho existuje jedna zraniteľnosť v shim vrstve, ktorá tiež umožňuje obísť UEFI Secure Boot. Skupina zraniteľností bola označená kódovým názvom Boothole 3, podobne ako podobné problémy, ktoré boli predtým identifikované v bootloaderi.

Na riešenie problémov v GRUB2 a shim budú môcť distribúcie použiť mechanizmus SBAT (UEFI Secure Boot Advanced Targeting), ktorý je podporovaný pre GRUB2, shim a fwupd. SBAT bol vyvinutý v spolupráci so spoločnosťou Microsoft a zahŕňa pridávanie ďalší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ť samostatne zahrnuté do zoznamov povolených alebo zakázaných komponentov pre UEFI Secure Boot.

Väčšina distribúcií Linuxu používa malú shim vrstvu digitálne podpísanú spoločnosťou Microsoft na overené spustenie v režime UEFI Secure Boot. 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.

Na odstránenie problémov v zavádzači budú musieť distribúcie vytvoriť nové interné digitálne podpisy a aktualizovať inštalačné programy, zavádzače, balíčky jadra, firmvér fwupd a vrstvu shim. Pred zavedením SBAT bola aktualizácia zoznamu zrušených certifikátov (dbx, UEFI Revocation List) nevyhnutnou podmienkou pre úplné zablokovanie zraniteľnosti, pretože útočník bez ohľadu na použitý operačný systém mohol použiť bootovacie médium so starou zraniteľnou verziou GRUB2, certifikovaný digitálnym podpisom, aby sa ohrozilo UEFI Secure Boot.

Namiesto odvolania podpisu vám SBAT umožňuje zablokovať jeho použitie pre jednotlivé čísla verzií komponentov bez toho, aby ste museli odvolávať kľúče pre Secure Boot. Blokovanie zraniteľností cez SBAT si nevyžaduje použitie zoznamu zrušených certifikátov UEFI (dbx), ale vykonáva sa na úrovni nahradenia interného kľúča na generovanie podpisov a aktualizáciu GRUB2, shim a iných bootovacích artefaktov dodávaných distribúciami. V súčasnosti už bola podpora SBAT pridaná do väčšiny populárnych distribúcií Linuxu.

Identifikované slabé miesta:

  • CVE-2021-3696, CVE-2021-3695 sú pretečenia vyrovnávacej pamäte založené na halde pri spracovaní špeciálne navrhnutých obrázkov PNG, ktoré možno teoreticky použiť na spustenie kódu útočníka a obídenie UEFI Secure Boot. Treba poznamenať, že problém je ťažké zneužiť, pretože vytvorenie pracovného exploitu si vyžaduje zohľadnenie veľkého počtu faktorov a dostupnosti informácií o rozložení pamäte.
  • CVE-2021-3697 – Podtečenie vyrovnávacej pamäte v kóde spracovania obrazu JPEG. Využitie problému vyžaduje znalosť rozloženia pamäte a je približne na rovnakej úrovni zložitosti ako problém PNG (CVSS 7.5).
  • CVE-2022-28733 - Pretečenie celého čísla vo funkcii grub_net_recv_ip4_packets() umožňuje ovplyvnenie parametra rsm->total_len odoslaním špeciálne vytvoreného paketu IP. Problém je označený ako najnebezpečnejší z prezentovaných zraniteľností (CVSS 8.1). Ak je táto chyba úspešne zneužitá, umožňuje zapisovanie údajov za hranicu vyrovnávacej pamäte tým, že sa zámerne pridelí menšia veľkosť pamäte.
  • CVE-2022-28734 - Pretečenie jednobajtovej vyrovnávacej pamäte pri spracovaní odstránených hlavičiek HTTP. Problém môže spôsobiť poškodenie metadát GRUB2 (zápis nulového bajtu tesne po konci vyrovnávacej pamäte) pri analýze špeciálne vytvorených požiadaviek HTTP.
  • CVE-2022-28735 Problém v overovači shim_lock umožňuje načítanie súborov mimo jadra. Zraniteľnosť možno použiť na načítanie nepodpísaných modulov jadra alebo neovereného kódu v režime UEFI Secure Boot.
  • CVE-2022-28736 Už uvoľnený prístup k pamäti vo funkcii grub_cmd_chainloader() prostredníctvom opätovného spustenia príkazu chainloader, ktorý sa používa na zavádzanie operačných systémov, ktoré GRUB2 nepodporuje. Zneužitie môže viesť k spusteniu kódu útočníka, ak je útočník schopný určiť alokáciu pamäte v GRUB2
  • CVE-2022-28737 – K pretečeniu vyrovnávacej pamäte vo vrstve shim dochádza vo funkcii handle_image() pri načítavaní a spúšťaní vytvorených obrazov EFI.

Zdroj: opennet.ru

Pridať komentár