要注意!Linux 6.9以降、LUKSのメモリ内ディスク暗号鍵がサスペンド時に破棄されない問題が発生中
Since Linux 6.9, LUKS suspend stopped wiping disk-encryption keys from memory
Since Linux 6.9, LUKS suspend stopped wiping disk-encryption keys from memory
Linuxカーネル6.9へのアップデート以降、LUKS(dm-crypt)を利用したディスク暗号化において、サスペンド(スリープ)時にメモリ上の暗号鍵が消去されず、そのまま残ってしまうという深刻なセキュリティ上の問題が報告されています。本来であればスリープ移行時に鍵はメモリからクリアされるべきですが、何らかの理由でこの挙動が機能しなくなっています。現在、この挙動が意図的な仕様変更なのか、あるいはバグなのかについて議論が進められています。システムのセキュリティを重視される方は、カーネルのバージョン管理に注意してください。
これ以外に方法はないと思うけど?スリープ(RAMへのサスペンド)時はすべてがRAMに保存されて暗号化されてるけど、マスターキーはカーネルメモリに残ってるはず(記憶が正しければだけど)。でもハイバネーション(ディスクへのサスペンド)なら、RAMの内容全体(マスターキーを含む)が暗号化されてディスクに書き込まれて、RAMはクリアされる。復帰するときはパスフレーズを再入力して、マスターキーを復号し、ディスクの内容をメモリに読み戻す必要があるよ。
スリープから復帰しても起動時のパスワードを再入力する必要はないから、当然ながら暗号化キーはメモリに残ったままってことだよね。
こういうリグレッションはすべてが「正常に動いている」ように見えるから見逃しやすいんだよね。セキュリティバグって、自分から「バグです」って名乗り出てくれるわけじゃないし。
とはいえ、2年以上もの間、サスペンド中も暗号化キーがメモリ上に残り続け、電源が入ったままのラップトップを奪った誰にでも盗まれる状態だった。
これがよくわからないんだけど。ラップトップは復帰時にロックされるわけで、どうしてキーが「誰にでも」盗める状態なの?ロックされたラップトップからRAMを読み取るのが不可能だとは言わないけど、さすがに「誰でも」できることじゃないでしょ。
興味深いバグなのは確かだけど、タイトルが少しクリックベイトじゃないかな?この cryptsetup luksSuspend は、理解している限り公式にサポートされているものではなく、Debianが実装した拡張機能に過ぎない。だから、このリグレッションはDebianにしか影響していないのでは?サポートすらされていない、あるいは広くテストもされていない機能についてカーネルを責めるのは筋違いだと思う。
とはいえ、依然として印象的なバグだし、このリグレッションが再発しないようにテストが用意されたのは良いことだと思う(ちなみに NixOSTests は素晴らしいよね、OPに同意)。でもタイトルだけ見ると、一つのディストリビューションに限定された問題じゃなく、広範囲に影響する問題かのように見えるのが少し気になる。
Fedoraのラップトップで、15分サスペンドしたら自動でハイバネーションするように設定してるよ。メモリの電源を落とせば、今回のようなDebian特有のバグなんて関係なくなるからね。
それに、Debianの拡張機能が理屈の上では良くても、実際にコールドブート攻撃を本気で心配するなら、LUKSキーだけじゃなくて全てのキーや重要なドキュメントをメモリから消去しないと意味がない。だから、コールドブートから守る唯一の適切な方法はハイバネーションだよ。
セキュリティの専門家じゃないけど、最近「リファクタリング中にファイル間で1行のC言語のチェックを漏らした」みたいな致命的なセキュリティバグが続々と発見されているのを見ると、「巨大で安全なオープンソースC言語コードベース」という前提自体が怪しく思えてくる。もちろんC言語に限った話じゃないけど、不変条件を(特にコード変更の多い環境で)一貫して強制・追跡するのはC言語では極めて困難だと思う。型レベルで不変条件をエンコードした関数型言語が、実用的でスケーラブルな解決策になるのかも分からない。モデル検査?[LLM]によるファジング?境界が明確な少数のプリミティブを組み合わせる?seLinuxが「検証」されたのはそういうアプローチなのかな?
個人的には、別に気にならないな。
自分がディスク暗号化をしている唯一の理由は、ラップトップを売却するときに他人が自分のラップトップを漁って税務書類やクレジットカード情報などを盗まれないようにするためだけだし。もちろん売るときにデータは消去するけど、ドライブレベルで暗号化されていれば、何らかのフォレンジックツールを使ってデータを復旧されるリスクはかなり低いと思ってる。
でもそれだと、復帰するたびに2回パスワードを入力しないといけないんじゃないの?LUKS用と、システムログイン用とで。
政府当局がどうしてもキーを入手する必要があったのかな?それともバックドア?コミットの追跡はされたの?
最近このパターンの報告をよく目にするから、少し疑心暗鬼になりつつある。みんなの意識が高まって、投稿が増えてるだけなのかな?