ΠžΠ±Ρ…ΠΎΠ΄ дискового ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ TPM2 для автоматичСской Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ

Один ΠΈΠ· ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² NixOS прСдставил Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ Π°Ρ‚Π°ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π½Π° Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… дисковых Ρ€Π°Π·Π΄Π΅Π»Π°Ρ…, Π² конфигурациях, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… Π²Π²ΠΎΠ΄Π° пароля Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, благодаря Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ Π² TPM2 (Trusted Platform Module) ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° сСрвСрах ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… станциях, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ дисков, Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° выполняСтся с использованиСм Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ³ΠΎ Π² TPM ΠΈ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠΈ исходного состояния систСмы. БостояниС систСмы сохраняСтся Π² Π²ΠΈΠ΄Π΅ Ρ…ΡΡˆΠ΅ΠΉ Π² рСгистрах PCR (Platform Configuration Register) ΠΈ привязываСтся ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ подписи, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π²Π΅Ρ€Π΅Π½ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ суммам Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ окруТСния (initrd). Доступ ΠΊ ΠΊΠ»ΡŽΡ‡Ρƒ Π² TPM прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ³Π΄Π° всС привязанныС ΠΊ Π½Π΅ΠΌΡƒ рСгистры PCR находятся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ состоянии, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΈ сохранСнии ΠΊΠ»ΡŽΡ‡Π°.

ΠŸΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы вСрифицируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ UEFI Secure Boot ΠΈ доступ ΠΊ ΠΊΠ»ΡŽΡ‡Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° initrd. ΠŸΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ диск автоматичСски разблокируСтся, Π½ΠΎ доступ ΠΊ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ…ΠΎΠ΄ Π² свою ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись Π² систСмС. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π±Π΅Π· Π²Π΅Ρ€ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈΠ»ΠΈ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² initrd с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° довСрия Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½Π°, состояниС рСгистров PCR измСнится ΠΈ TPM2 Π½Π΅ отдаст свСдСния, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ.

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Ρ‚Π°ΠΊΠΈ позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· измСнСния содСрТимого initrd Π² конфигурациях, Π½Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»Ρ‹ LUKS. ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ² Π½Π΅ описываСтся Π²ΠΎ всСх Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… инструкциях ΠΏΠΎ настройкС дискового ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ идСнтификация Ρ€Π°Π·Π΄Π΅Π»Π° Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ услоТняСт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ (трСбуСтся ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ рСгистра PCR для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π° Ρ€Π°Π·Π΄Π΅Π»Π° ΠΈ гСнСрация initrd с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π΅Π³ΠΎ значСния). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ продСмонстрированы для Fedora Linux Π² связкС с инструмСнтариСм clevis ΠΈ для NixOS Π² связкС с systemd-cryptenroll. Для ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ физичСский доступ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ извлСчСния накопитСля.

ΠœΠ΅Ρ‚ΠΎΠ΄ основываСтся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» Π½Π° собствСнный Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», созданный с Ρ‚Π΅ΠΌ ΠΆΠ΅ UUID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ извСстными Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ. ΠžΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ initrd пСрСдаст ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ init-процСссу Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ. Π’Π°ΠΊ ΠΊΠ°ΠΊ содСрТимоС initrd Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, состояниС TPM Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² своём ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ cΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TPM для Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π° исходного дискового Ρ€Π°Π·Π΄Π΅Π»Π°.

Атака сводится ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагам:

  • Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ диска ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ /boot. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΈ Π΅Π³ΠΎ UUID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π΅ ΠΈΠ· initrd-ΠΎΠ±Ρ€Π°Π·Π°, находящСгося Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ /boot.
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 64ΠœΠ‘ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ LUKS-Ρ€Π°Π·Π΄Π΅Π»Π°.
  • Π—Π°ΠΌΠ΅Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… 64ΠœΠ‘ Π½Π° ΠΎΠ±Ρ€Π°Π· с собствСнным ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ, Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ с использованиСм извСстного Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ UUID-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΊ Ρƒ старого Ρ€Π°Π·Π΄Π΅Π»Π°.
  • Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ диска Π² исходный ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° с ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌ ΠΊΠΎΡ€Π½Π΅Π²Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ. Π’Π°ΠΊ ΠΊΠ°ΠΊ автоматичСская Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ ΠΈΠ· TPM для ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‘Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ΠΉ, initrd Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ запрос для Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° пароля.
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· TPM исходного ΠΊΠ»ΡŽΡ‡Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ TPM ΠΈ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΈΠ· LUKS-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° старого Ρ€Π°Π·Π΄Π΅Π»Π°.
  • ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° диска Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅Π³ΠΎ, восстановлСниС пСрСзаписанной части LUKS-Ρ€Π°Π·Π΄Π΅Π»Π° ΠΈΠ· Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ ΠΈ использованиС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ исходного ΠΊΠ»ΡŽΡ‡Π° для доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru