
Windows 10 バージョン1809、Spectre 2対策でRetpolineのサポートを追加 18
やっと 部門より
Microsoftが1日にリリースしたWindows 10バージョン1809/Server 2019向けの累積更新プログラムKB4482887(ビルド17763.348)では、パフォーマンス低下の少ないSpectre Variant 2(CVE-2017-5715)緩和策「Retpoline」が一部のデバイスで有効化されたという(Windows Kernel Internals、Phoronix)。
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以降のみの提供になるとのことだ。
Retpolineを強制的に有効化する手順 (スコア:2)
設定としては、レジストリの「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」が該当する設定となります。
プログラム側が対応しないと意味がない? (スコア:0)
ペナルティほぼなしの“Specter V2”緩和策が「Windows 10 バージョン 1809」に導入 - 窓の杜 [impress.co.jp]で
って書いてあるんだけど、OS側の変更だけでは意味がないのかな?
Re:プログラム側が対応しないと意味がない? (スコア:1)
プログラマなら「カーネルモードで動作するバイナリを再コンパイルする必要がある」って説明だけで全て伝わるのですが
一般ユーザには何のことだかサッパリわからないですよね
Retpolineを正しく機能させるには
カーネルモードで動作するバイナリを全部Retploine対応版に更新する必要があります.
具体的には以下のバイナリを更新することになります
A) マイクロソフト製のカーネル
B) マイクロソフト製のデバイスドライバ
(Windowsが自動でインストールしてくれるドライバです)
C) ユーザが手動で追加インストールするサードパーティー製のデバイスドライバ
(Windowsが自動インストールしてくれないドライバです)
これらAとBとCがすべて retpoline に対応しないかぎり,脆弱性は残ったままになります.
AとBは,windows update で自動的に retpoline 対応バイナリに差し替わっていくはずなので
特に気にしなくて大丈夫です.マイクロソフトを信じましょう.
問題は C) の手動でインストールしたドライバです.
これが retpoline 未対応だと脆弱性は残ったままになります.
これはマイクロソフトはサポートしてくれないので自分で何とかする必要があります.
またA,B,C以外のバイナリ,たとえばワードとかエクセルみたいなアプリは基本的に変更不要です
ただ一部のアプリケーションは,こっそりサードパーティー製のデバイスドライバをインストールしていることがあります
(たとえばCADアプリで,ライセンス認証でドングルと呼ばれるハードウェアキーを使うやつとかです)
とりあえずよくわからないときは,セキュリティアップデートが出てないか逐次確認して,適宜更新するしかありませんね.
Re:プログラム側が対応しないと意味がない? (スコア:1)
今はWindows Updateで降ってくるインボックスドライバがほとんどになったはずだけど
セキュリティにうるさいのにセキュリティ水準が低い銀行とか公的機関の無料配布ツール系がヤバそう
Re: (スコア:0)
> セキュリティにうるさいのにセキュリティ水準が低い銀行
言い得て妙ですね。
Re: (スコア:0)
ややこしいのが、カーネルモードドライバとユーザーモードドライバがあるということ。
脆弱性に問題があるのはカーネルモードドライバだが、一般ユーザーには区別がつかない。
大体ライセンス認証ドングルはユーザーモードドライバじゃないかな
(うーんでもhack除けにカーネル側に入れるかなぁ)
Re: (スコア:0)
Windows Updateから降ってくるドライバーってサードパーティー製のもあった気がするんだけど、1WHQLの認証要件にretpoline対応が追加されたりしたのかな?
Re: (スコア:0)
https://techcommunity.microsoft.com/t5/Windows-Kernel-Internals/Mitiga... [microsoft.com]
ここに
windowsのretpoline実装は混在環境をサポートしなくてはならず、
retpolineで更新されたドライバの実行時に高いパフォーマンスを提供するが
セキュリティを守るためにretpolineでないドライバーに入るとハードウェアベースの緩和にフォールバックする
Re: (スコア:0)
>これが retpoline 未対応だと脆弱性は残ったままになります.
Retpolineは別に新しい脆弱性の緩和じゃなくて、セキュリティ的には従来と同じ緩和策だけど
速度低下少ない版って事なので、Retpolineに非対応なら「速度低下の大きい従来の緩和策」が引き続き守ってくれるだけなのでは。
まだ1809が降ってこない (スコア:0)
この記事を見てバージョンを確認したところ1803
コントロールパネルから更新の確認をしても1803の累積修正が落ちてくるだけでした
Re: (スコア:0)
現時点でのブロック対象はF5 VPNクライアントを使っているか、インテルのディスプレイドライバー付属のオーディオドライバーをインストールしている場合 [microsoft.com]で、後者は徐々にブロック解除、前者は今月中旬にブロック解除の見込みです。
うちは後者に引っかかりましたが、早々に当該バージョンよりも新しいドライバーに更新しても、なかなか1809は降ってきませんでした。今月初旬に漸く1809に更新できたけど、もうすぐ1903が来るんだよね…。
でも今度は新たな脆弱性も… (スコア:0)
せっかくこれで速度低下緩和をやっても、また今度は…。
インテルもマイクロソフトも、マジしっかりしてくれよ。
もうすぐ1903、改元も絡むだけに色々大変なことになる。
誰だよバリアント2をV2って略したの (スコア:0)
Spectre脆弱性にバージョン2が出たのかと思っちゃったじゃないか
ようやく対応したのに (スコア:0)
Retpolineの発見者(Google)から「いやSpectreの対策とか不可能だから」と梯子を外されたわけだが。
https://security.srad.jp/story/19/02/28/0853224/ [security.srad.jp]
# まあどうせ不可能なら実行性能に大きなペナルティのある手法を採用する意味はないとも言える
Re: (スコア:0)
まぁ、みんな薄々、完全な対策って無理だよねって思ってたのをちゃんと文章にまとめただけなのであって、今更、これではしごを外されたと思う人はいないとおもいますが。
Re: (スコア:0)
私のPCなんか狙われるはずないし対策なんてしてくれなくていいんですけど?
そんなことよりPCの処理速度が10%-30%も下がると
ゲームのフレームレートが60fps切っちゃうんで勘弁してください。
パッチいらないです。
って人が私を含め多数居ると思うのですが選択肢を与えてください。
# 昨年11月にi5-2500からRyzen2600に組み替えたんですけど(どっちもWin10)
# 脆弱性回避パッチが必要なのか?当たってるのか?当たってないのか?さえわからないです・・・
Re: (スコア:0)
ついでにこれも。Spectreの亜種はすでにいくつもあってRetpolineはそのうちの一部にしか効かない。
https://arxiv.org/abs/1811.05441 [arxiv.org]
skylake以降には適用しない (スコア:0)
もうずっと遅いままなんですかね…
linuxじゃ少し工夫して適用してるらしいですが