マイクロソフト、「Edge」のセキュリティを高める「SDSM」機能をテスト

2021/08/06 

 

 

 Microsoftのブラウザー「Edge」の脆弱性研究チームは、「Super Duper Secure Mode(SDSM)」と名付けた新機能をテストしている。これは、性能を損なうことなくEdgeのセキュリティを高めるための機能だ。

 

 

 Bleeping Computer(筆者がSDSMの情報を初めて目にしたサイト)によると、SDSMは、V8の処理パイプラインからJust-In-Time(JIT)コンパイルを取り除くことによって機能し、それによって、Edgeのシステムに対するハッキングに利用される恐れのあるアタックサーフェスが縮小するという。

 「JavaScriptは、どのブラウザーでも重要な役割を担っている。JITが存在することには理由があり、それはJavaScriptの性能を最適化することだ」と、Microsoftのブラウザー研究者らは、米国時間8月4日付けのSDSMに関するブログ記事で述べた。しかし、これまでのところJITを無効にしても性能にあまり変化は見られず、同チームのテストのほとんどで結果は変わらなかったという。

 JITを無効にすると、修正が必要なV8のバグの約半分が取り除かれることになる。これは、ユーザーに提供されるセキュリティアップデートの頻度が減り、緊急パッチの数が減ることを意味すると、研究者らは述べた。

 SDSMはまだ実験段階とみなされている。しかし、Canary、Dev、Betaの各Edgeプレビュービルドのテスターらは、edge://flags/#edge-enable-super-duper-secure-modeからこの新機能を有効にできる。

 

 

 

 

 

 

 

MicrosoftがEdgeでJITを無効化し安全なブラウジングができる「Super Duper Secure Mode」をテスト

2021/08/06 

 

 

ウェブブラウザでセキュリティ上の課題の1つとなっているのが、Javascriptの特定タスク高速化のためのテクノロジー「実行時コンパイラ(JITコンパイラ)」を含むJavascriptエンジン関連です。Microsoftがこの点に対応すべく、JITを無効化する「Super Duper Secure Mode」をEdgeのCanary・Dev・Betaチャンネルに追加しました。

Super Duper Secure Mode | Microsoft Browser Vulnerability Research
https://microsoftedge.github.io/edgevr/posts/Super-Duper-Secure-Mode/

 

Microsoftの脆弱(ぜいじゃく)性調査チームによれば、脆弱性を利用したウェブブラウザへの攻撃で最も多いのはJavascriptエンジンまわりのバグを悪用したものだとのこと。狙われているとわかっていれば対策できそうにも思えますが、たとえば高速化技術「JITコンパイラ」のように、パフォーマンスは向上しているもののプロセスが複雑なため、最終的にセキュリティ面でコストを支払うことになっている事例があるそうです。2019年以降に付与された共通脆弱性識別子(CVE)のうち、V8 Javascriptエンジンを対象としたCVEの約45%はJIT関連だったとのこと。

「一般にユーザーは高速性を求めるものなので、開発者はセキュリティコストがかかったとしてもJITを当たり前のものとして有効化しているが、単に無効化したらどうなるのだろうか」と仮定したMicrosoft脆弱性調査チームは、そもそも修正が必要となるバグが半減することで、攻撃対象となる領域が減少し、攻撃そのものが困難になるのではないかという結論に至りました。

一方で、ユーザー視点ではセキュリティ更新の頻度が下がることで、特に大企業などで発生する「更新にあたって問題がないかどうかのテスト」を減らせるほか、パフォーマンス低下はほとんど影響を感じないレベルであることがわかりました。以下のグラフはJITを無効化して何百ものテストを行った結果を示したもので、緑は改善、黄色は変化なし、赤は悪化を表現しています。

 

調査では、Javascriptベンチマークにおいてスコアが58%低下するという結果はあったものの、「パフォーマンスが58%低下する」わけではないため、「ユーザーが影響に気づかないことはよくある」とのこと。

こうした結果に基づいて、MicrosoftはJITを無効化してIntel提供の攻撃緩和技術・CETを有効化した「Super Duper Secure Mode」のテストを実施することを決めました。すでにEdge Canary・Edge Dev・Edge Betaで「edge://flags」にアクセスすると「Super Duper Secure Mode」の項目が追加されています。有効化する場合は「Default」から「Enabled」への変更が必要です。

 

Microsodtでは今後、数カ月にわたってテストを重ね、速度と安全性のバランスを取れる方法を探っていくとのことです。

 

 

 

 

 

 

 

JITをやめてみる ~Microsoft、「Edge」で「めっちゃすげえセキュリティモード」をテスト

標的となっている「V8」の攻撃面を減らし、レンダラープロセスで強力な緩和策を有効化

 

2021/08/06 

 

 

 米Microsoftは8月4日(現地時間)、「Microsoft Edge」の新しいセキュリティ機能「Super Duper Secure Mode」(意訳:めっちゃすげえセキュリティモード)を発表した。まだ実験的な段階で、名称も公式なものではないが、パフォーマンスよりもセキュリティを重要視するユーザーにとっては気になる存在になりそうだ。

 同社によると、JavaScriptエンジンの欠陥を突いた攻撃はさまざまだが、基本は長い間変わっておらず、だいたい以下のパターンで行われているという。

  • オブジェクトの偽装
  • プリミティブ(基本データ型)のアドレス取得
  • 任意の書き込み

 セキュリティチームが発見した欠陥はこのテンプレートにコピー&ペーストするだけで実証可能で、攻撃者は「PwnJS」のようなフレームワークを用いて即座に悪用できる体制を整えている。

 しかし、これは防御側としては悪夢だ。欠陥を発見するとすばやく対処し、ユーザーにアップデートを促さなければならない。そのため、MicrosoftやGoogle、MozillaといったWebブラウザーベンダーは欠陥を見つけ出す手法の開発に大規模な投資を行うとともに、大規模な懸賞プログラムを用意してハッカーに問題の報告を促している。にもかかわらず、JavaScriptエンジンはWebブラウザーにとってのセキュリティ上の課題であり続けているのが現状といえる。

 そこで同社のセキュリティチームが提案するのが、「ジャストインタイムコンパイル」(JIT)と呼ばれるJavaScriptエンジンのパフォーマンス技術をいっそのことやめてしまおうという解決策だ。

 2019年以降のCVE(脆弱性に割り当てられる認識番号)を調査すると、JavaScriptエンジン「V8」で発見された脆弱性のうち、約45%がJITエンジンに関するものだという。さらに、Mozillaが指摘するところによると、「Chrome」で修正前に悪用された(in the wild)ケースのうち半数以上がJITのバグを悪用している。

 JITはWebブラウザーのパフォーマンスを少しでも引き上げるために年々複雑化しているが、修正を必要とするセキュリティ欠陥の半数を生み出している。果たして速度アップに見合う価値があるだろうか――というわけだ。

 

 また、JIT無効化のメリットは攻撃面(つまり、脆弱性)を減らすだけではない。「V8」のJITはその仕組み上、有力なセキュリティ緩和策のいくつかをレンダラーのプロセスで利用できない。たとえばIntelが開発したハードウェアベースの新しいエクスプロイト緩和策「CET」(Controlflow-Enforcement Technology)は、レンダラープロセスで活用できていない。また、RWXメモリページを使用しているため「ACG」(Arbitrary Code Guard)も無効化されている。こうした技術をレンダラープロセスにも適用できれば、セキュリティは飛躍的に向上するだろう。 

 

 とはいえ、JITを無効化するとパフォーマンスは大幅に低下してしまうのではないかという懸念は残る。そこでJITの有無でWebブラウザーのパフォーマンスがどれだけ変わるのかをテストしたところ、たしかにいくつかのテストでは改善が見られたものの、ほとんどの場合は性能に大きな変化はないという。 

 

 また、変化のあったテスト(ページ読み込み、メモリ使用量、起動時間、消費電力)をさらに詳しく調査したとことろ、消費電力では平均で15%の改善が見られたものの、かえって約11%増加したケースもあった。他のテストでも、改善もあれば悪化もあるのが実際のところのようだ。

 これまでJITはパフォーマンスアップの切り札として喧伝されてきた。たとえば「Speedometer 2.0」ベンチマークではJITを無効にすると58%もスコアが低下してしまう。しかし、実際のユースケースでユーザーはJITの無効化を体感できるだろうか。

 

 どちらにしろ、実際に2つのバージョンのWebブラウザーを比べてみないことには答えは得られないだろう。同社は今後数カ月をかけて、「Super Duper Secure Mode」プロジェクトでレンダラープロセスにおけるCET、ACG、CFG(Control Flow Guard、制御フロー ガード)の実装を進めていく計画だ。実際に試してみたい場合は、プレビュー版「Edge」(Beta/Dev/Canary)で試験段階の機能(edge://flags/)で「Super Duper Secure Mode」フラグを有効化してみるとよい。現時点ではJIT(TurboFan/Sparkplug)を無効にし、CETを有効にした状態をテストできる。ただし、WebAssemblyはまだサポートされていないので注意したい。