パスワードを忘れた? アカウント作成
13855252 story
Windows

Windows 10 バージョン1809、Spectre 2対策でRetpolineのサポートを追加 18

ストーリー by hylom
やっと 部門より
headless曰く、

Microsoftが1日にリリースしたWindows 10バージョン1809/Server 2019向けの累積更新プログラムKB4482887(ビルド17763.348)では、パフォーマンス低下の少ないSpectre Variant 2(CVE-2017-5715)緩和策「Retpoline」が一部のデバイスで有効化されたという(Windows Kernel InternalsPhoronix)。

Googleが開発したRetpoline(return+trampoline)は、間接的なブランチを投機実行から分離することでSpectre Variant 2(ブランチターゲットインジェクション)の影響を緩和するというものだ。CPUのマイクロコードアップデートによる新機能を用いてカーネルモードでの間接的な分岐予測を制限する、というMicrosoftの緩和策と比べてパフォーマンス低下が大幅に小さくなるとされ、Linuxでは1年以上前から採用されていた。

MicrosoftはRetpolineをWindows 10 19H1で導入する計画を示し、64ビット版のWindows 10 Insider Previewビルド18272以降で利用可能となっていたが、バージョン1809にもRetpolineのサポートに必要なOSの変更がバックポートされたという。ただし、バージョン1809のRetpolineはデフォルトで無効になっており、ビルド17763.348では一部のデバイスのみ有効化されたということのようだ。他のデバイスでも、今後数か月のうちに順次有効化していくとのこと。なお、実装と変更が複雑なことから、Retpolineはバージョン1809以降のみの提供になるとのことだ。

  • Windows Kernel Internalsの記事が更新され、強制的にRetpolineを有効化する手順が追記されています。

    設定としては、レジストリの「HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management」に2つのDWORD値「FeatureSettingsOverride」「FeatureSettingsOverrideMask」を追加し、値のデータをそれぞれ0x400にしてWindowsを再起動するというもの(サーバー向けSKUのFeatureSettingsOverrideMaskは0x401)。

    この設定によりRetpolineとインポート最適化が有効になり、Retpolineに対応しないSkylake世代以降のIntel CPUではインポート最適化のみが有効になるとのこと。これらの値が既に存在する場合、ほかの緩和策 [microsoft.com]が設定されていることになるので、既存の設定を維持するにはそれぞれの値のデータをビット単位でORする必要があります。

    Retpolineとインポート最適化が有効化されたかどうかについては、PowerShellスクリプトSpeculationControl [github.com]で確認できます。「Get-SpeculationControlSettings」の出力で、「BTIKernelRetpolineEnabled」「BTIKernelImportOptimizationEnabled」が該当する設定となります。
    ここに返信
  • by Anonymous Coward on 2019年03月07日 14時07分 (#3576745)

    ペナルティほぼなしの“Specter V2”緩和策が「Windows 10 バージョン 1809」に導入 - 窓の杜 [impress.co.jp]で

    “Retpoline”を有効化するには、カーネルモードで動作するバイナリを再コンパイルする必要がある。OSとそれに同梱されているカーネルモードドライバーだけならともかく、サードパーティー製のバイナリすべてにそれを要求するのは不可能なので、導入は一筋縄ではいかない。“Retpoline”非対応バイナリに対しては“Retpoline”ではなく、従来からある緩和策を適用する必要があるためだ。

    って書いてあるんだけど、OS側の変更だけでは意味がないのかな?

    ここに返信
    • プログラマなら「カーネルモードで動作するバイナリを再コンパイルする必要がある」って説明だけで全て伝わるのですが
      一般ユーザには何のことだかサッパリわからないですよね

      Retpolineを正しく機能させるには
      カーネルモードで動作するバイナリを全部Retploine対応版に更新する必要があります.

      具体的には以下のバイナリを更新することになります
      A) マイクロソフト製のカーネル
      B) マイクロソフト製のデバイスドライバ
            (Windowsが自動でインストールしてくれるドライバです)
      C) ユーザが手動で追加インストールするサードパーティー製のデバイスドライバ
            (Windowsが自動インストールしてくれないドライバです)

      これらAとBとCがすべて retpoline に対応しないかぎり,脆弱性は残ったままになります.

      AとBは,windows update で自動的に retpoline 対応バイナリに差し替わっていくはずなので
      特に気にしなくて大丈夫です.マイクロソフトを信じましょう.

      問題は C) の手動でインストールしたドライバです.
      これが retpoline 未対応だと脆弱性は残ったままになります.
      これはマイクロソフトはサポートしてくれないので自分で何とかする必要があります.

      またA,B,C以外のバイナリ,たとえばワードとかエクセルみたいなアプリは基本的に変更不要です

      ただ一部のアプリケーションは,こっそりサードパーティー製のデバイスドライバをインストールしていることがあります
      (たとえばCADアプリで,ライセンス認証でドングルと呼ばれるハードウェアキーを使うやつとかです)
      とりあえずよくわからないときは,セキュリティアップデートが出てないか逐次確認して,適宜更新するしかありませんね.

      • by Anonymous Coward on 2019年03月07日 15時34分 (#3576800)

        今はWindows Updateで降ってくるインボックスドライバがほとんどになったはずだけど
        セキュリティにうるさいのにセキュリティ水準が低い銀行とか公的機関の無料配布ツール系がヤバそう

        • by Anonymous Coward

          > セキュリティにうるさいのにセキュリティ水準が低い銀行
           
          言い得て妙ですね。

      • by Anonymous Coward

        ややこしいのが、カーネルモードドライバとユーザーモードドライバがあるということ。
        脆弱性に問題があるのはカーネルモードドライバだが、一般ユーザーには区別がつかない。
        大体ライセンス認証ドングルはユーザーモードドライバじゃないかな
        (うーんでもhack除けにカーネル側に入れるかなぁ)

      • by Anonymous Coward

        Windows Updateから降ってくるドライバーってサードパーティー製のもあった気がするんだけど、1WHQLの認証要件にretpoline対応が追加されたりしたのかな?

      • by Anonymous Coward

        https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/Mitiga... [microsoft.com]
        ここに
        windowsのretpoline実装は混在環境をサポートしなくてはならず、
        retpolineで更新されたドライバの実行時に高いパフォーマンスを提供するが
        セキュリティを守るためにretpolineでないドライバーに入るとハードウェアベースの緩和にフォールバックする

      • by Anonymous Coward

        >これが retpoline 未対応だと脆弱性は残ったままになります.

        Retpolineは別に新しい脆弱性の緩和じゃなくて、セキュリティ的には従来と同じ緩和策だけど
        速度低下少ない版って事なので、Retpolineに非対応なら「速度低下の大きい従来の緩和策」が引き続き守ってくれるだけなのでは。

  • by Anonymous Coward on 2019年03月07日 16時55分 (#3576842)

    この記事を見てバージョンを確認したところ1803
    コントロールパネルから更新の確認をしても1803の累積修正が落ちてくるだけでした

    ここに返信
  • by Anonymous Coward on 2019年03月07日 17時57分 (#3576882)

    せっかくこれで速度低下緩和をやっても、また今度は…。
    インテルもマイクロソフトも、マジしっかりしてくれよ。
    もうすぐ1903、改元も絡むだけに色々大変なことになる。

    ここに返信
  • by Anonymous Coward on 2019年03月07日 18時44分 (#3576917)

    Spectre脆弱性にバージョン2が出たのかと思っちゃったじゃないか

    ここに返信
  • by Anonymous Coward on 2019年03月07日 18時46分 (#3576919)

    Retpolineの発見者(Google)から「いやSpectreの対策とか不可能だから」と梯子を外されたわけだが。
    https://security.srad.jp/story/19/02/28/0853224/ [security.srad.jp]
    # まあどうせ不可能なら実行性能に大きなペナルティのある手法を採用する意味はないとも言える

    ここに返信
    • by Anonymous Coward

      まぁ、みんな薄々、完全な対策って無理だよねって思ってたのをちゃんと文章にまとめただけなのであって、今更、これではしごを外されたと思う人はいないとおもいますが。

      • by Anonymous Coward

        私のPCなんか狙われるはずないし対策なんてしてくれなくていいんですけど?
        そんなことよりPCの処理速度が10%-30%も下がると
        ゲームのフレームレートが60fps切っちゃうんで勘弁してください。
        パッチいらないです。
        って人が私を含め多数居ると思うのですが選択肢を与えてください。
        # 昨年11月にi5-2500からRyzen2600に組み替えたんですけど(どっちもWin10)
        # 脆弱性回避パッチが必要なのか?当たってるのか?当たってないのか?さえわからないです・・・

    • by Anonymous Coward

      ついでにこれも。Spectreの亜種はすでにいくつもあってRetpolineはそのうちの一部にしか効かない。
      https://arxiv.org/abs/1811.05441 [arxiv.org]

  • by Anonymous Coward on 2019年03月08日 1時37分 (#3577102)

    もうずっと遅いままなんですかね…
    linuxじゃ少し工夫して適用してるらしいですが

    ここに返信
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...