Заобикаляне на дисковото криптиране, използващо TPM2 за автоматично отключване

Един от пакетите в NixOS представи техника за атака, която позволява достъп до данни на криптирани дискови дялове, в конфигурации, които не изискват въвеждане на парола за отключване при стартиране, благодарение на разположението в TPM2 (Trusted Platform Module) на информация за декриптиране. Такива конфигурации често се използват на сървъри или многопотребителски работни станции, при които е проблематично ръчно да се въвежда паролата след всяко перезареждане.

При прилагането на подобен метод на криптиране на дискове, декриптирането се извършва с помощта на допълнителен ключ, съхраняван в TPM и предоставян само след потвърждение на първоначалното състояние на системата. Състоянието на системата се запазва под формата на хешове в регистрите PCR (Platform Configuration Register) и е обвързано с цифров подпис, с който е заверен буутвера, както и с контрольни суми на буутвера и на първоначалната зареждаща среда (initrd). Достъпът до ключа в TPM се предоставя само когато всички свързани регистри PCR са в същото състояние като при запазването на ключа.

Предполага се, че веригата за зареждане на операционната система се верифицира чрез UEFI Secure Boot и достъпът до ключовете може да се получи само от немодифициран образ на initrd. При успешно проверка, дискът автоматично се отключва, но достъпът до декриптираните данни може да се получи само чрез влизане в собствения си акаунт в системата. При обращение без верифицирано зареждане или при опит за замяна или внасяне на промени в initrd с цел прихващане на ключовете, веригата на доверие ще бъде нарушена, състоянието на регистрите PCR ще се промени и TPM2 няма да предостави информацията, необходима за декриптиране.

Публикуваният метод на атака позволява да се заобиколят конфигурации, които не идентифицират криптирани LUKS дялове, без да се променя съдържанието на initrd. Забелязва се, че включването на подобна проверка на дяловете не е описано във всички намерени инструкции за настройка на дисково криптиране, тъй като идентифицирането на дялове значително усложнява конфигурацията (необходимо е привличането на допълнителен PCR регистър за проверка на ключа на дяла и генерирането на initrd, като се отчита стойността му). Примери за реализация на атаката са демонстрирани за Fedora Linux в комбинация с инструмента clevis и за NixOS в комбинация с systemd-cryptenroll. Физически достъп до компютъра и възможност за извличане на носителя са необходими за извършване на атаката.

Методът се основава на това, че атакуващият може да замени съществуващия коренов криптиран дял със собствен криптиран дял, създаден с идентификатор UUID и известни на атакуващия ключове за декриптиране. Средата initrd ще предаде управлението на init процеса в дяла на атакуващия. Тъй като съдържанието на initrd не е променено, състоянието на TPM няма да бъде нарушено и получавайки контрол в собствената си среда, атакуващият може да използва TPM за декриптиране на ключа на оригиналния диск.

Атаката се състои в следните стъпки:

  • Извличане на диска и провеждане на анализ на друг компютър на некриптираните данни в дяла /boot. Определяне на информация за криптирания дял и неговия идентификатор UUID от initrd образа, намиращ се в дяла /boot.
  • Създаване на резервно копие на първите 64MB от криптирания LUKS дял.
  • Замяна на указаните 64MB с образ на собствен коренов дял, криптиран с известен на атакуващия ключ и с UUID идентификатор, идентичен на стария дял.
  • Връщане на диска в оригиналния компютър и зареждане с подменения коренов дял. Тъй като автоматичното отключване с ключа от TPM за подменения дял завършва с неуспех, initrd извежда искане за ръчно въвеждане на парола.
  • Получаване на оригиналния ключ от TPM, използвайки метаданни за TPM и криптирания токен от заглавката на LUKS на стария дял.
  • Преместване на диска на компютъра на атакуващия, възстановяване на перезаписаната част от LUKS дяла от резервното копие и използване на полученния оригинален ключ за достъп до данните.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster