世界を動かす技術を、日本語で。

Linux 6.9以降、LUKSのサスペンドがディスク暗号化キーをメモリから消去しなくなった

2026年7月3日原文(mathstodon.xyz)

概要

  • Mastodon のウェブアプリ利用時は JavaScript有効化 が必要
  • JavaScriptが無効の場合は ネイティブアプリ の利用推奨
  • 各プラットフォーム向けの 公式アプリ も用意
  • 利用環境に応じた 最適な方法 の選択が重要
  • 利用開始のための 基本的な案内

Mastodonウェブアプリ利用案内

  • Mastodonのウェブアプリ利用には JavaScriptの有効化 が必須
  • ブラウザ設定で JavaScriptをオン にする必要
  • JavaScriptが無効の場合、 ウェブアプリが正常動作しない 可能性

JavaScriptが使えない場合の代替案

  • JavaScriptが利用できない場合、 Mastodon公式ネイティブアプリ の利用推奨
  • iOS・Android・デスクトップ向けに 各種アプリ提供
    • App StoreやGoogle Playなどで Mastodonアプリ を検索・インストール
    • デスクトップ版は 公式サイト からダウンロード可能
  • ネイティブアプリは JavaScript不要 で利用可能

Mastodon利用開始のポイント

  • 利用環境に合わせて 最適な方法を選択 することが重要
  • JavaScript有効化またはネイティブアプリ利用で 快適なMastodon体験

Hackerたちの意見

他に方法が思いつかないな。スリープ(RAMに保存)すると、全部RAMに保存されて暗号化されるけど、マスターキーはカーネルメモリに残ってるはず。確かそうだったと思う。でも、ハイバーネート(ディスクに保存)すると、RAMの内容全部(マスターキーも含めて)がディスクに書き込まれて暗号化されて、RAMはクリアされる。マシンを起こすときには、パスフレーズを再入力してマスターキーを復号化して、ディスクの内容をメモリに戻さないといけない。

そうだね、ほとんどの標準的なLinuxディストリビューションでラップトップをスリープさせると、マスターキーを含むすべてがメモリに残る。でも、Debianが(オプションの)cryptsetup-suspendアドオンを先駆けて作ったんだ。これがluksSuspendコマンドを発行して、メモリからキーを消去することになっていて、復帰時にはパスフレーズを再入力するように求められる。カーネル6.8までは、ちゃんと動いてたけど、6.9からは静かに動かなくなった。

最近5年くらいに作られたIntel/AMDのCPUは、OSに対して完全に透過的なメモリ暗号化をサポートしてるよ。だから、この機能を有効にすればコールドブート攻撃は過去のものになる(通常はRAMの速度が約0.5%落ちるから無効になってるけど)。

スリープから復帰したときにブートパスワードを再入力しなくていいから、明らかに暗号化キーはまだメモリに残ってるね。

明らかに君のディストリビューションはcryptsetup-luksSuspendを使ってないね。

これは見逃しやすい回帰の一つだね。だって、全部まだ「動いてる」から。セキュリティバグはしばしば自分からは知らせてこないからね。

その通り!だから、こういう機能の統合テストがますます重要なんだ。書くのも楽しかったし、このバグを引き起こした特定のカーネルのリファクタリングを特定するためにgit-bisectが使えたよ: https://github.com/NixOS/nixpkgs/pull/532499

ただし、2年以上にわたって、暗号化キーはスリープ中もメモリに残っていて、まだ電源が入っているラップトップを誰でも奪える状態だった。理解できないな。明らかに、ラップトップは復帰するときにロックされてるのに、そのキーが「誰でも奪える」ってどういうこと?ロックされたラップトップからRAMを読み出すのが不可能とは言わないけど、確かに「誰でも」できるわけじゃないよね。

物理的にアクセスできる人なら誰でも。フレーズから理解できると思う。ロック画面の一般的な誤解があって、通常は現在のハードウェアやソフトウェアを使ってOSにアクセスするのを防ぐだけなんだ。でも、ディスク暗号化が実際のデータへの改ざんや他のアクセスを防ぐ主な要素なんだよ。もしディスク暗号化キーがメモリに残ってたら、物理的にそのマシンにアクセスできる人がいれば、実質的にディスク暗号化がバイパスされちゃう。十分な改ざん防止策がそのマシンにないと仮定すればね。

デバイスが電源オンの状態で物理的にアクセスできると、RAMをダンプする攻撃もあるよ。設定によっては、すごく簡単(Thunderbolt経由でUSB Cにダンパーを接続して直接メモリアクセスするだけ)だったり、難しい(物理RAMをフリーズさせて、ロック解除されたマシンにスワップする)こともあるけど、ここでのアイデアは防御の深さだね。ちゃんと設定されたデバイスは、RAMをダンプするのが難しいはずだし、攻撃者が成功した場合でも暗号鍵を渡さないようにするべきなんだ。

物理メモリをダンプしてから、オフラインでディスクを復号するんだ。

確かに面白いバグだけど、タイトルはちょっとクリックベイトっぽい気がするな。cryptsetup luksSuspendは、俺が理解した限りでは公式にはサポートされてないし、Debianでの拡張機能だから、これって結局Debianだけに影響するんじゃない? サポートされてないものや、広くテストされてないものにカーネルを責めるのはどうかと思う。とはいえ、これはすごいと思うし、今後このリグレッションが戻ってこないようにテストがあるのはいいことだね(NixOSTestsはマジで素晴らしい、OPに同意)。でも、タイトルからすると、これは広範囲に影響する問題みたいに見えるけど、実際は特定のディストロだけの話だよね。

Hacker Newsで議論の続きを見る