「Microsoft Edge」にRIDLサイドチャネル攻撃の緩和策 ~ただし代償も/まずはWindows版「Edge」で導入、「Chromium」プロジェクトにもコード貢献

by 樽井 秀人

公式ブログ「Microsoft Browser Vulnerability Research」

米Microsoftは6月24日(現地時間)、Windows版「Microsoft Edge」に「RIDL」サイドチャネル攻撃への緩和策を追加したと発表した。「Chromium」プロジェクトにも反映されており、いずれは「Edge」以外の「Chromium」系ブラウザーにも恩恵がもたらされる。

「RIDL」(Rogue In-Flight Data Load)は2019年、Vrije Universiteit Amsterdamの研究者たちが発見したサイドチャネル攻撃。かつて世間を騒がせた「Spectre」や「Meltdown」といったCPU脆弱性の最新版といえるもので、権限に関わらず同じシステム上で実行されている他のプロセスから機密情報を推測できてしまう。

「Spectre」や「Meltdown」との違いは、Intel製CPUの「Line Fill Buffer」(LFB)に常駐するデータを標的としている点だ。「LFB」はキャッシュミスが発生した場合に備え、未処理のメモリ要求を追跡するために使用される内部バッファーだが、ここを攻略されてしまうと、同じコア上で以前にスケジュールされた別のプロセスから、最近アクセスされたデータすべてが漏洩してしまう可能性がある。

これは信頼できない外部データを日常的に扱うWebブラウザーにとって、無視できない問題だ。なぜなら、Webブラウザーは信頼できるデータとできないデータを隔離するため、最新のCPUが保証するメモリ分離技術に大きく依存している。それが機能していないとなれば、信頼性でデータを分けるというWebブラウザーのセキュリティアーキテクチャーのそのものが無意味となってしまう。

研究者によると、この脆弱性はIntel製プロセッサーのみに影響する。そのため、Intelはマイクロコードのアップデートでこれに対処したが、これは完全ではなく、根本的な解決を行うには「Hyper-Threading」などのCPU高速化技術を無効にしなければならない。しかし、この方法はCPUのパフォーマンスが大きく低下してしまうため、導入を躊躇する現場が多いのが実情だ。

そこでMicrosoftは、プロセス内のスレッドが別のセキュリティドメインのスレッドと同じコアにスケジュールされないようにする新しいオプトインスケジューリング機能をBuild 25922以降のWindowsに追加した。「Microsoft Edge」の場合、v121.0.2277.128で導入された「RestrictCoreSharing」という緩和ポリシーを有効化すれば、このOS機能を活用し、レンダリングプロセスが他のセキュリティドメインのスレッドとCPUコアを共有しなくなる。つまり、「RIDL」攻撃の心配をせずに済む。

「Edge」でこの緩和策を有効にするには、以下の機能フラグを付けて「Edge」を起動する必要がある。現時点では「Windows Insider Preview」ビルドでのみ有効。

  • v128.0.2662.0まで:msRendererRestrictCoreSharing
  • v128.0.2663.0から:WinSboxRestrictCoreSharingOnRenderer

レンダラープロセスで有効になっている緩和ポリシーは、「edge://sandbox」画面でレンダラーの[Mitigations]列の値をチェックするとよい。「Chromium」の場合は、v128.0.6538.0から「WinSboxRestrictCoreSharingOnRenderer」機能フラグが利用できる。

「edge://sandbox」画面

ただし、この緩和ポリシーにはデメリットもある。とくにゲームのプレイやその他の計算負荷の高いタスクを実行しているときなど、「Edge」に大きな負荷がかかる場合に、システムパフォーマンスに深刻な影響が及ぶ可能性がある。同社の見積もりでは、タスクによってコア全体のパフォーマンスが最大20%低下する。

そのため、緩和ポリシーの適用はメリット・デメリットを見極めて行う必要がある。セキュリティに十分な注意を払わなければならないユーザーや、不審なサイトであっても訪問せざるを得ない場合には心強いが、よく知られた評判のよいWebサイトしか訪れないカジュアルユーザーにとってはデメリットのほうが大きいかもしれない。

© 株式会社インプレス