
TPM連携LUKSディスク暗号化をLinuxシステム上でバイパスすることを実証する概念実証。カスタムルートファイルシステム攻撃によりボリュームキーを抽出します。
このリポジトリには、1年以上前に https://oddlama.org/blog/bypassing-disk-encryption-with-tpm2-unlock/ で最初に説明された一般的な弱点を悪用する、シンプルな概念実証コードが含まれています。特に IncusOS を対象としていますが、この攻撃はほとんどの最新 Linux システムに対してかなり汎用的です。
LUKS 暗号化を TPM にバインドする場合は、必ず TPM に PIN も設定してください。
これは簡易的な PoC です。完全に洗練されておらず、粗い部分もあります。サポートは一切なく、今後の開発も予定していません。
私は他の多くの人と同様に、ノートパソコンの TPM チップにバインドした LUKS ディスク暗号化を設定すれば安全で、攻撃者が LUKS ボリュームキー(別名マスターキー)を抽出するのを防げると思っていました。しかし、実際にはほぼ絶望的なほど簡単に実行でき、攻撃の痕跡も残りません。
その通りです。問題は、攻撃者がカスタムのルートファイルシステムを提供できることで、システムが起動した後、TPM は既知の「正常な」状態になり、LUKS ボリュームを喜んでロック解除してしまいます。その後、攻撃者は好き放題でき、攻撃の証拠を簡単に隠蔽できます。
しかし、準備された攻撃者は、あなたのコンピュータを数分間手に入れるだけで、あなたは完全にやられてしまいます。夕食に出かける間、ノートパソコンをホテルの部屋に置いておきますか? 尋問のために脇に連れ出されるセキュリティチェックポイントはどうですか? そう、これは良くない状況です。
スクリプト ./prepare.sh は、ターゲット VM を侵害するために必要な手順を実行します。同じ手順は、通常の筐体から一時的に取り外された実際のハードドライブに対しても簡単に実行できます。
実際の「エクスプロイト」は元の LUKS ボリュームキーを抽出します。これは attack.service のジャーナルログを確認することで見ることができます。この攻撃には多くのバリエーションが可能です。
./restore.sh を実行して、被害者の LUKS ボリュームキーを手に入れながら、あなたの行為の痕跡をすべて消し去りましょう。