パスワードを忘れた? アカウント作成
15372513 story
マイクロソフト

プレビュー版 Microsoft Edge のセキュリティ強化モード「Super Duper Secure Mode」 46

ストーリー by headless
強化 部門より
Microsoft Browser Vulnerability Research (VR) チームがプレビュー版の Microsoft Edge でテスト中のセキュリティ強化モード「Super Duper Secure Mode (SDSM)」について解説している(VR のブログ記事The Verge の記事On MSFT の記事The Register の記事)。

Web ブラウザーに対する攻撃の主なターゲットは JavaScript エンジンのバグだ。中でもパフォーマンスを向上させる「JIT (Just-In-Time Compilation)」に関連する問題が大きな割合を占め、V8 に関する脆弱性で 2019 年以降に発行された CVE の 45 % を JIT エンジンが占めているという。さらに、Intel によるハードウェアベースのエクスプロイト緩和技術 Control-flow Enforcement Technology (CET) のように、V8 JIT と共存させることのできない脆弱性緩和技術も多い。

SDSM は JIT を無効化して脆弱性緩和技術を有効化するというもので、現在の SDSM では 2 つの JIT (TurboFan / Sparkplug)を無効化するとともに、CET が有効化される。パフォーマンス向上技術の JIT だが、無効化しても通常のブラウジングで体感できるような差は出ないようだ。今後はさらなる脆弱性緩和技術の有効化や、Web Assembly サポートの追加を行う計画だという。

SDSM を有効にするには、プレビュー版 Microsoft Edge (Bata / Dev / Canary) で「試験段階の機能 (edge://flags)」の「Super Duper Secure Mode (edge://flags/#edge-enable-super-duper-secure-mode)」を「Enabled」にしてブラウザーを再起動すればいい。

VR チームでは SDSM プロジェクトを楽しんで進めていく計画で、公式にするにはまだ早すぎることもあって面白い名前を付けたとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by poly (42427) on 2021年08月08日 17時37分 (#4087096) 日記
    どうなるんだろ?
    • by Anonymous Coward

      WebAssemblyができることは、Javascriptと変わらない
      何がいいたいんだ?

    • by Anonymous Coward

      何が?

    • by Anonymous Coward

      ここ数年ほとんどウェブアセンブリのことを調べたことは無かったが、ウェブアセンブリが結局JIT使うなら、おれが望んでいたものとだいぶ違うな。Ahead of Time コンパイルで最初から直接動くコードを読み込んで最速を目指すのがそれの目的かと思ったら、JavaScriptの構文解析のコストを下げるだけで終わってしまうのか。ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。サーバーで長々と動かすソフトウェアならゆるゆる最適化、実行中にコードを並び替えるのもいいかもしれないが、端末でそれやると非効率だ。

      • by Anonymous Coward

        ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。<script src=xxx.js> のかわりに <exec code=x86:xxx.dll,armv8:xxx.armv8.so> みたいな感じで。

        Google NaClがそんな感じの仕組みだった。だから、NaCl→pNaCl→WebAssemblyの流れを調べれば、その疑問の答えが分かるのではないかと予想している。誰か調べて教えてほしい。

        • by Anonymous Coward

          アーキテクチャが増えるたびに誰がどうメンテするのって話になるのでしょう。
          だから、pNaClの時点で中間コードになった。

          今でもx86,x64,ARM,MIPSがあるし、RISC-Vとかも多分要考慮。
          x86/64と一口に言ってもSSEやAVXとか環境によってサポート具合が異なる。
          しかも、サイト側がユーザーのアーキテクチャ向けのバイナリを用意しなければ動かない。
          バイナリなし環境でも動くように救おうとしたら、アーキテクチャ分ののバイナリ変換プログラムの保守が必要になって、テストは指数関数的に増える。

          そんな面倒な事やってられねーので、今の形になったと思う。

      • by Anonymous Coward

        コードをあんまり具象化すると、AMDの拡張命令が使えるかとかAppleのSoCのコプロセッサが使えるかどうかとか
        判定をsoやdllの中で網羅していかないといかなくて不便な気がする。
        (既存のコード資産は、判定をsoやdllまで持ってきてるのもあれば、#ifdefなんかで落ちるのもあるんじゃない)

        コードの中で判定するのは人手がかかるし、ファットバイナリは簡単だが通信量が増える

      • by Anonymous Coward

        > ブラウザから直接マシンコード読み込んで動かすことのなにがいけないのだろうか。

        セキュリティの観点からはどっちもダメなのでは。その場で生成するのはダメだけどそのまま実行するのはいいという理由はない

        • by Anonymous Coward on 2021年08月11日 4時55分 (#4088405)

          JITでは一般的にメモリページの属性を読み書き実行可能(RWX)にするので、任意メモリ書き換えできる脆弱性が即座に任意コード実行に変化しがち。それよりは事前に問題無いと検証できているAOTコードの実行のほうがRWXページ不要なので安全という見方ができると思う。

          なお、その点でFirefoxのJITは工夫している。ページ属性を適宜RWとRXと変更し、RWXを使わないようにしている。

          Firefox: W^X JIT-code が有効になりました
          https://dev.mozilla.jp/2016/04/wx-jit-code-enabled-in-firefox/ [mozilla.jp]

          親コメント
  • by Anonymous Coward on 2021年08月08日 21時14分 (#4087195)

    「『セキュリティのためにJavaScriptは切る』という説はもう古い」というキャンペーンの準備かな、とも思うが
    Microsoftならそこまでのことはあるまい(邪悪さという意味でもJavaScriptへの依存度的にも)

  • by Anonymous Coward on 2021年08月09日 0時20分 (#4087270)

    CETのサポートはMSの独自機能かもしれませんが、JIT無効化は2年前にリリースされたV8 JavaScript engine v7.4で実装済みの機能 [v8.dev]ですね。(解説記事 [v8.dev])

    JIT無効化はV8の機能なのでChromium系の他のブラウザでも使用できると思います。

  • by Anonymous Coward on 2021年08月08日 17時41分 (#4087102)

    スラドなんかJavascript性能いらないから、単純で遅いけどセキュアなJavascriptエンジンと高速なJITのJavascriptエンジンの二本立てにして、サイトで切り替えればいいのに、と思った。
    二つ維持したくないというのはあるかもしれないが。

    • by Anonymous Coward

      と書いてから、本文を最後まで読むと、JITエンジン部分とその他の部分が分離されていて、JITエンジン部分だけ無効化できるのね。

  • by Anonymous Coward on 2021年08月08日 17時47分 (#4087108)

    Super Dojikko Secure Modeと呼ばれていそう

    • by Anonymous Coward

      じっとしていられない?

  • by Anonymous Coward on 2021年08月08日 18時00分 (#4087119)

    ブラウザのタブごとに仮想マシン起動してそこで動かせばいいのに

    仮想マシン上で、限定された権限のプロセスで、ブラウザエンジン動かせば、
    たとえセキュリティホールがあっても、ダメージくらう確率は非常に少ないでしょう

    • by Anonymous Coward

      オーバーヘッドがそれなりに大きいのとブラウザのコードが肥大化するからでしょ。

    • by Anonymous Coward

      今でもあるよ。
      Application Guardっていって、Hyper-Vをベースにしたコンテナ内でタブを開くことができるらしい。
      使ったことはない。

      Windows Defender Application Guard、他社ブラウザー用拡張を提供開始
      https://security.srad.jp/story/19/03/20/2252223/ [security.srad.jp]

      • by Anonymous Coward

        HP Sure ClickとかMS以外からも似たソリューションは有る。

    • by Anonymous Coward

      コア分離したら、マウスもキーボードも動かなくなって、仕方なく電源ボタン長押しで強制終了した俺ガイル

    • by Anonymous Coward

      防火扉増やしますってのと、全面禁煙にして火災報知器を増やしますってのは別の話ですしおすし

      • by Anonymous Coward

        フェイトは犠牲になったのだ……ノーチラス号の犠牲にな……

    • by Anonymous Coward

      そういうのは仮想OS上のブラウザでも使えば十分では。

  • by Anonymous Coward on 2021年08月08日 18時39分 (#4087131)

    なんだってーΩΩΩ

  • ニュースサイトとか単に演出のためにJavaScript使ってて正直邪魔。
    あと、お約束のように強制的な広告表示に悪用されてる現実もある。

  • by Anonymous Coward on 2021年08月08日 20時42分 (#4087181)

    OSでかぶりそうな機能がありそうな仰々しい仕組みだな。それブラウザがやることか? と直感してしまう技術だが、少し考え直した。もう昔ながらのカーネルスペース、ユーザースペース云々とかの概念は時代に合わないんだな。ウェブブラウザが安全にコードを動かすための基礎のすべてを提供するのがコンピューター端末の進化で起こる必然かもしれん。

    • by Anonymous Coward

      逆。仰々しい仕組みを捨ててブラウザ側はシンプルにしてあとはOSのセキュリティ機能に頼るって話

      • by Anonymous Coward

        OSに向いてることはOSがアプリが向いていることはアプリでって流れでは。
        かつ多層防御化する。

        • by Anonymous Coward

          ごめんちょっと何言ってるか分かんない

          • by Anonymous Coward

            メモリ上のデータの暗号化を書くアプリでそれぞれ実装しろとでも?

            • by Anonymous Coward

              ああ、そのコメントを読んで(#4087335)を理解できた!
              読点がなかったので日本語構文解析器がうまく文章をパースできなかったのだ

  • by Anonymous Coward on 2021年08月08日 23時16分 (#4087254)

    脆弱性の半分がJIT起因だ、って言われたらJITを排除するのが公正というものだわな。

    • by Anonymous Coward

      みんなが巨大Javascriptを作ってるけど
      みんなで数種類の大Javascriptフレームワークを使い
      みんなwebpack・難読化してるからリソースファイルとしては全部別

      みたいな感じだから、グラフに整理したら(難読化除く)今のコンピューターリソースじゃほんと意味ないのかも

      • by Anonymous Coward

        もう1個。

        JSはその言語仕様から非同期関数が発展することになったが、
        非同期関数を呼ぶ関数は、最適化の有無は体感に寄与しないのが多そう。

    • by Anonymous Coward

      そりゃ、JavaScriptでゴリゴリ計算するのなんてブラウザゲーぐらいだろうし。
      遅延要因として外部リソースのアクセス解析外す方がUXに影響しそう。

      • by Anonymous Coward

        ブラウザゲーってゴリゴリ計算してんの? サーバーからJSONか何かでもらった結果を描画しているだけだと思ってた

        • by Anonymous Coward

          Unityを使ったネイティブゲームはサーバーからJSONか何かでもらった結果を描画しているだけでしょうね
          ブラウザゲーはよく知らないけどAjax(死語)でゴリゴリやってるんじゃないんですかね

      • by Anonymous Coward

        ゲーム以外ではビデオ・音声チャットなんかもJavaScriptあるいはWebAssemblyでごりごりやっているのではないかと思う。E2EEとかやろうとするとクライアント側で映像・音声に対する処理を入れるのでその辺り。

typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...