Obcházení šifrování disku používajícího TPM2 pro automatické odemčení

Jeden z doprovodných balíčků v NixOS představil techniku útoku, která umožňuje přístup k datům na zašifrovaných diskových oddílech v konfiguracích nevyžadujících zadání odemykacího hesla při spuštění díky uložení informací pro dešifrování v TPM2 (Trusted Platform Module). Tyto konfigurace se často používají na serverech nebo vícero pracovní stanice, kde je problematické manuálně zadávat heslo po každém restartu.

Při použití podobné metody šifrování disků se dešifrování provádí pomocí dalšího klíče, který je uložen v TPM a je vydáván pouze po potvrzení původního stavu systému. Stav systému se uchovává ve formě hashů v registrech PCR (Platform Configuration Register) a je vázán na digitální podpis, kterým je podepsán zaváděcí program, stejně jako na kontrolní součty zaváděcího programu a počátečního zaváděcího prostředí (initrd). Přístup k klíči v TPM je poskytován pouze tehdy, když jsou všechny vázané registry PCR ve stejném stavu, jako při uložení klíče.

Předpokládá se, že řetězec načítání operačního systému je ověřován pomocí UEFI Secure Boot a přístup k klíčům lze získat pouze z nemodifikovaného obrazu initrd. Při úspěšné kontrole se disk automaticky odemkne, ale přístup k dešifrovaným datům je možný pouze po přihlášení do svého účtu v systému. Při pokusu o přístup bez ověřeného spuštění nebo při pokusu o nahrazení či změnu initrd s cílem zachytit klíče bude důvěryhodný řetězec narušen, stav registrů PCR se změní a TPM2 neposkytne informace potřebné pro dešifrování.

Publikovaná metoda útoku umožňuje obejít se bez změny obsahu initrd v konfiguracích, které neidentifikují šifrované LUKS oddíly. Je zaznamenáno, že zahrnutí takovéto kontroly oddílů není popsáno ve všech nalezených instrukcích pro konfiguraci diskového šifrování, protože identifikace oddílu výrazně komplikuje konfiguraci (vyžaduje zapojení dalšího registru PCR pro ověření klíče oddílu a generaci initrd s ohledem na jeho hodnotu). Příklady provedení útoku byly demonstrovány pro Fedora Linux v kombinaci s nástrojem clevis a pro NixOS v kombinaci s systemd-cryptenroll. Pro provedení útoku je potřebný fyzický přístup k počítači a možnost vyjmutí úložiště.

Metoda vychází z toho, že útočník může nahradit existující kořenový šifrovaný oddíl vlastním zašifrovaným oddílem, vytvořeným se stejným UUID identifikátorem a známými útočníkovi klíči pro dešifrování. Prostředí initrd převede řízení na init proces v oddílu útočníka. Vzhledem k tomu, že obsah initrd nebyl změněn, stav TPM nebude narušen a když získá kontrolu ve svém prostředí, může útočník použít TPM pro dešifrování klíče původního diskového oddílu.

Útok spočívá v následujících krocích:

  • Vyjmutí disku a provedení analýzy nezšifrovaných dat na jiném počítači v oddílu /boot. Určení informací o šifrovaném oddílu a jeho UUID identifikátoru z initrd obrazu, nacházejícího se v oddílu /boot.
  • Vytvoření zálohy prvních 64MB šifrovaného LUKS oddílu.
  • Nahrazení uvedených 64MB obrazem s vlastním kořenovým oddílem, zašifrovaným s použitím známého útočníkového klíče a majícím UUID identifikátor jako starý oddíl.
  • Vrátit disk do původního počítače a spustit se zaměněným kořenovým oddílem. Vzhledem k tomu, že automatické odemknutí podle klíče z TPM pro zaměněný oddíl končí neúspěchem, initrd vyvolá požadavek na ruční zadání hesla.
  • Získání původního klíče z TPM pomocí metadat o TPM a zašifrovaného tokenu z LUKS hlavičky starého oddílu.
  • Přesun disku do počítače útočníka, obnovení přepsané části LUKS oddílu ze zálohy a použití získaného původního klíče pro přístup k datům.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster