立ち退き通知:新たなキャッシュ攻撃がLinuxとDockerの隔離を破る

オーストリア工科研究所の研究者らは、NDSS 2026会議において、オペレーティングシステムのページキャッシュ攻撃に関する厳密な分析と改良を発表しました。「Eviction Notice(立ち退き通知)」と題された同論考は、キャッシュ管理機構内の脆弱性が、最小限のシステム権限かつ管理者の監督なしに実行されるサイドチャネル攻撃を可能にする仕組みを解き明かしています。

ページキャッシュは、オペレーティングシステムが最近アクセスされたディスクデータを保存し、後続の取得を高速化するための揮発性メモリ領域です。このアーキテクチャは性能を大幅に向上させる一方で、重大なセキュリティリスクを生み出します。攻撃者がどのファイルページがキャッシュ内に存在するかを見分けられれば、他のユーザーの行動を推測できます。たとえば、パスワード入力フォームが開かれたかどうかの判定や、特定のWebドメインへの訪問の特定が可能になります。

ページキャッシュへの侵入は2019年に文書化されていましたが、この新たな研究は従来の限界を超えています。研究チームは、キャッシュとの相互作用のための4つの重要なプリミティブ(reload、flush、evict、monitor)を定義しました。これらのプリミティブを組み合わせることで、Flush+MonitorやEvict+Reloadを含む5種類の異なる攻撃手法を構築できます。これらの手法により、キーストロークの秘匿的な記録、稼働中の認証インターフェースの検出、アプリケーション内部の挙動の監視が可能になります。

最重要の発見の一つは、posix_fadviseシステムコールをPOSIX_FADV_DONTNEEDフラグ付きで悪用することでした。これにより、キャッシュからページを追い出すだけでなく、高精度な実行時間計測を通じて、その呼び出し以前にページがキャッシュされていたかどうかを判定できます。これは実質的に、削除コマンドを情報漏えいの経路へと変質させるものです。

さらに著者らは、予測されるページを事前に読み込むLinuxカーネルの先読み(read-ahead)機構の回避にも成功しました。これは2つの戦略、すなわちファイルを逆順に読み取る方法と、readaheadシステムコールを利用する方法によって達成されました。後者は、自動的な事前読み込みを発動させることなく、キャッシュへの投入をきめ細かく制御できます。

読み込みを発生させずにキャッシュ常駐を監視するため、研究者らはpreadv2システムコールをRWF_NOWAITフラグ付きで用いました。これは要求したページがメモリに存在しない場合にエラーを返します。別の仕組みであるcachestat(Linuxカーネル6.5で導入)は脆弱と判断され、CVE-2025-21691が割り当てられました。カーネル開発チームへの事前の情報開示を経て、この脆弱性は2025年初頭に修正されました。

それでも、主要な仕組みであるposix_fadvisepreadv2は、根本的に無防備なままです。これらを制限すると後方互換性を損なう恐れがあり、防御策の実装を複雑にします。逆説的に言えば、まさにこれらの呼び出しが、最も精密で堅牢なサイドチャネル解析手法を可能にしています。

著者らは、これらの手法が、隔離されたプロセス間の秘匿通信チャネルの確立、Dockerコンテナ内の活動の検出、ブラウザイベントの特定、認証インターフェースへの攻撃に悪用できることを示しました。こうした知見は、ユーザーデータの不可侵性だけでなく、厳格に隔離された環境の安全性にも疑義を突きつけます。本研究は、現代のオペレーティングシステムにおけるアーキテクチャ上の判断を再評価する差し迫った必要性を浮き彫りにしています。これらの攻撃は特権昇格を要しないため、防御のパラダイムは、こうした非伝統的な脅威に対処できるよう適応しなければなりません。

翻訳元: https://meterpreter.org/eviction-notice-new-cache-attacks-break-linux-and-docker-isolation/

ソース: meterpreter.org