Obchodzenie szyfrowania dysków wykorzystującego TPM2 do automatycznego odblokowania

Jeden z pakietów w NixOS zaprezentował technikę ataku, która pozwala uzyskać dostęp do danych na zaszyfrowanych partycjach dyskowych w konfiguracjach, które nie wymagają wprowadzenia hasła odblokowującego przy uruchamianiu, dzięki umieszczeniu informacji potrzebnych do deszyfrowania w TPM2 (Trusted Platform Module). Takie konfiguracje są często stosowane na serwerach lub stacjach roboczych dla wielu użytkowników, na których problematyczne jest ręczne wprowadzanie hasła po każdym ponownym uruchomieniu.

W przypadku zastosowania takiej metody szyfrowania dysków, deszyfrowanie odbywa się z użyciem dodatkowego klucza, przechowywanego w TPM i wydawanego tylko po potwierdzeniu stanu początkowego systemu. Stan systemu jest zachowywany w postaci hashy w rejestrach PCR (Platform Configuration Register) i jest powiązany z cyfrowym podpisem, którym jest podpisany bootloader, a także z sumami kontrolnymi bootloadera i początkowego środowiska rozruchowego (initrd). Dostęp do klucza w TPM jest udzielany tylko wtedy, gdy wszystkie powiązane z nim rejestry PCR są w tym samym stanie, co przy przechowywaniu klucza.

Zakłada się, że łańcuch uruchamiania systemu operacyjnego jest weryfikowany przy pomocy UEFI Secure Boot, a dostęp do kluczy można uzyskać tylko z niemodyfikowanego obrazu initrd. Po pomyślnej weryfikacji dysk zostaje automatycznie odblokowany, ale dostęp do odszyfrowanych danych można uzyskać tylko przez zalogowanie się na swoje konto w systemie. W przypadku próby dostępu bez zweryfikowanego uruchamiania lub przy próbie wymiany lub wprowadzania zmian w initrd w celu przechwycenia kluczy, łańcuch zaufania zostanie naruszony, stan rejestrów PCR ulegnie zmianie i TPM2 nie dostarczy informacji potrzebnych do deszyfrowania.

Opublikowana metoda ataku pozwala na obejście się bez zmiany zawartości initrd w konfiguracjach, które nie identyfikują szyfrowanych partycji LUKS. Zauważono, że włączenie takiej weryfikacji partycji nie jest opisywane we wszystkich znalezionych instrukcjach dotyczących konfiguracji szyfrowania dysków, ponieważ identyfikacja partycji znacznie utrudnia konfigurację (wymaga dodatkowego rejestru PCR do weryfikacji klucza partycji i generowania initrd z uwzględnieniem jego wartości). Przykłady przeprowadzenia ataku zostały zaprezentowane dla systemu Fedora Linux w połączeniu z narzędziem clevis oraz dla NixOS w połączeniu z systemd-cryptenroll. Aby przeprowadzić atak, potrzebny jest fizyczny dostęp do komputera oraz możliwość wyciągnięcia nośnika.

Metoda opiera się na tym, że atakujący może zastąpić istniejącą zaszyfrowaną partycję root swoją własną zaszyfrowaną partycją, stworzoną z tym samym identyfikatorem UUID i znanymi atakującemu kluczami deszyfrującymi. Środowisko initrd przekaże kontrolę procesu init do partycji atakującego. Ponieważ zawartość initrd nie została zmieniona, stan TPM nie będzie naruszony, a uzyskując kontrolę w swoim środowisku, atakujący będzie mógł wykorzystać TPM do deszyfrowania klucza oryginalnej partycji dyskowej.

Atak polega na następujących krokach:

  • Wyciągnięcie dysku i przeprowadzenie analizy niezabezpieczonych danych na innym komputerze w partycji /boot. Określenie informacji o zaszyfrowanej partycji i jej identyfikatorze UUID z obrazu initrd znajdującego się w partycji /boot.
  • Utworzenie kopii zapasowej pierwszych 64 MB zaszyfrowanej partycji LUKS.
  • Zastąpienie tych 64 MB obrazem z własną partycją root, zaszyfrowaną przy użyciu znanego atakującemu klucza i mającą identyfikator UUID taki jak stara partycja.
  • Włożenie dysku z powrotem do oryginalnego komputera i załadowanie z podmienioną partycją root. Ponieważ automatyczne odblokowanie za pomocą klucza z TPM dla podmienionej partycji kończy się niepowodzeniem, initrd wyświetla prośbę o ręczne wprowadzenie hasła.
  • Uzyskanie z TPM oryginalnego klucza, korzystając z metadanych o TPM oraz zaszyfrowanego tokenu z nagłówka LUKS starej partycji.
  • Przeniesienie dysku do komputera atakującego, przywrócenie nadpisanej części partycji LUKS z kopii zapasowej oraz wykorzystanie uzyskanego oryginalnego klucza do uzyskania dostępu do danych.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster