
Windows 8以降でEMETやExploit Protectionを使用して必須ASLRを有効にしただけでは適切なランダム化が行われないとの指摘 29
ストーリー by headless
表示 部門より
表示 部門より
Windows 8以降でEMETを使用する場合や、Windows 10 Fall Creators UpdateのWindows Defender Exploit Protectionを使用する場合、「必須ASLR」を有効にしても適切なランダム化が行われないとして、CERT/CCが問題の詳細と緩和策を公開している(Vulnerability Notes Database VU#817544、
BetaNewsの記事、
BleepingComputerの記事、
Will Dormann氏のツイート)。
モジュールに割り当てるメモリーアドレスをランダム化して攻撃者によるデータの悪用を困難にするASRLだが、Windowsの既定では「/DYNAMICBASE」オプションを使用してコンパイルされた(ASLRの適用をオプトインした)モジュールにのみ適用される。必須ASLRを有効にするとオプトインしていないモジュールにもASLRを強制することが可能となるが、エントロピーを確保するにはボトムアップ型のメモリー割り当てでベースアドレスをランダム化する「ボトムアップASLR」も重要だ。
Windows 8以降では必須ASLR/ボトムアップASLRがOSの機能に組み込まれているため、EMET/Exploit Protectionはオプションをレジストリに設定する機能のみを提供する。設定が格納されるレジストリ値は「HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel」の「MitigationOptions」という値なのだが、EMET/Exploit Protectionともにデフォルトではこの値が作成されない。
Exploit Protectionのデフォルトでは必須ASLRが「既定でオフにする」、ボトムアップASLRが「既定でオンにする」に設定されている。必須ASLRはMitigationOptionsが存在しなければオフになるため問題ないが、ボトムアップASLRはUI上の表示に反してオフになっている。CERT/CCでは有効な設定を含む.regファイルの内容を公開しているが、Exploit ProtectionでボトムアップASLRをいったんオフにし、再度オンにすることで有効なレジストリ値をセットすることも可能だ。なお、「既定値を使用する(<オン>)」を選択した場合は有効なレジストリ値がセットされないので注意が必要だ。
モジュールに割り当てるメモリーアドレスをランダム化して攻撃者によるデータの悪用を困難にするASRLだが、Windowsの既定では「/DYNAMICBASE」オプションを使用してコンパイルされた(ASLRの適用をオプトインした)モジュールにのみ適用される。必須ASLRを有効にするとオプトインしていないモジュールにもASLRを強制することが可能となるが、エントロピーを確保するにはボトムアップ型のメモリー割り当てでベースアドレスをランダム化する「ボトムアップASLR」も重要だ。
Windows 8以降では必須ASLR/ボトムアップASLRがOSの機能に組み込まれているため、EMET/Exploit Protectionはオプションをレジストリに設定する機能のみを提供する。設定が格納されるレジストリ値は「HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel」の「MitigationOptions」という値なのだが、EMET/Exploit Protectionともにデフォルトではこの値が作成されない。
Exploit Protectionのデフォルトでは必須ASLRが「既定でオフにする」、ボトムアップASLRが「既定でオンにする」に設定されている。必須ASLRはMitigationOptionsが存在しなければオフになるため問題ないが、ボトムアップASLRはUI上の表示に反してオフになっている。CERT/CCでは有効な設定を含む.regファイルの内容を公開しているが、Exploit ProtectionでボトムアップASLRをいったんオフにし、再度オンにすることで有効なレジストリ値をセットすることも可能だ。なお、「既定値を使用する(<オン>)」を選択した場合は有効なレジストリ値がセットされないので注意が必要だ。
EMETのデフォルトではWindowsの既定値と同じ、オプトインのみASLR有効のオプションが選択されているため、レジストリでMitigationOptionsが設定されていなくても表示と設定の不一致は発生しない。グローバルな必須ASLRのオプションはレジストリ設定を追加することで選択可能になるが、EMET上でボトムアップASLRをグローバル設定することはできず、アプリケーションごとの設定が必要になる。
この場合もCERT/CCが公開しているレジストリ設定を適用することでボトムアップASLRがグローバルで有効になる。ただし、レジストリ設定はExploit Protection用のものでMitigationOptionsがバイナリ値になっている。EMETのMitigationOptionsはQWORD値になっており、他のオプションを変更するとボトムアップASLRの設定が失われるので注意が必要だ。これを回避するにはMitigationOptionsをQWORD値で作成し、0x10000を設定してから他のオプションをEMETで設定すればいい。
実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみだが、Microsoftでもこの点を除いては仕様通りに動作しており、脆弱性ではないと説明している(TechNet - Security Research & Defenseの記事)。
>実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみ (スコア:3, すばらしい洞察)
だったらそれだけ書けばよいのでは…。この長文の意味はなんなんだ。
いや技術記事としては面白いけど、そうとわかるように書いてよ。
実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみだが、Microsoftでもこの点を除いては仕様通りに動作しており、脆弱性ではないと説明している
Re:実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみ (スコア:1)
文章を書くときに長文になる人は要点だけを抜き出す力が乏しいんだと思いますよ
アレもコレも入れたら分かりやすいと思って入れましたという作者の意に反して読者は読みにくくなるのに気がつかないオチ
Re: (スコア:0)
> 文章を書くときに長文になる人は要点だけを抜き出す力が乏しいんだと思いますよ
つまり、全ての記事は「特に気にする事は無い」の一文に要約出来るという事だな。
Re: (スコア:0)
なるほど
そういう視点から読むと面白みが増しますね
Re: (スコア:0)
居もしないApple信者とARM信者を妄想で口汚く叩いている人はやっぱり同じ人だったんですね!
いやーすっきりしました
# できれば良なくなってくれればもっとすっきりするんだが…
Re: (スコア:0)
そりゃ妄想でくだらないこと書いてりゃ、誰だってマイナス付けるだろ
Re:実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみ (スコア:0)
「設定すべきレジストリの値を設定しませんでした」というだけの話に技術記事として面白い要素なんかあるか? Windows as a Serviceとか言い出してからMS製品の品質低下はマジ異常とかぜんぜん技術的でない感想くらいしかつけられそうにない。
MS製品の品質低下(笑) (スコア:0)
まるで以前は邪悪なM$製品の品質が高かったかのような言い方だなww
http://toyokeizai.net/articles/-/122089?page=4 [toyokeizai.net]
私はWindows95を予定どおりに発売するために、全力で仕事をしました。その結果、きちんと1995年8月24日にグローバル版が発売されました。しかし発売当時、Windows95には約3500個のバグが残っていました。私たちはそれを知っていましたが、そのまま発売することになりました。
Re: (スコア:0)
あの大企業だってやらかすのだから俺達がやらかすのは仕方がない。
あの大企業だって見落とすのに俺たちに何ができるのか。
Re:実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみ (スコア:0)
Microsoftの時は範囲広くなるように書く
他の時は範囲狭くなるように書く
というのがここの特徴(ここだけじゃないが)かと。
Linuxカーネル脆弱性なんかそうですよね。
Androidと言う普及デバイススルーはデカい。
コメントでそこを書く方が居る(感謝)ので辛うじて救われてる感じ。
Re:実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみ (スコア:0)
その引用文ひとつとっても「だが」の使い方おかしいし、技術だけ溜め込んで論理の出来てないタイプなんでしょうね。
発表記事に違和感 (スコア:1)
発表記事に違和感があるなあ。レジストリなんて変更しなくても、管理者権限のあるPowerShellで「 Set-ProcessMitigation -System -Enable BottomUp 」を実行するだけだろうになあ。Windows 10 ver.1709での動作を見る限り、レジストリの値の説明も間違っていそうだ。
Re: (スコア:0)
レジストリのMitigationOptionsはWindowsのバージョンによって値の意味が多少異なるようです。Windows 10 ver.1703/1709でそれぞれ変更が入っていますし、レジストリの値をいじるのは危険です。リンク先の記事にあるものはWindows8系の設定で、Windows 10系ではありません。
あと、Set-ProcessMitigationですが、www.powershellgallery.comにあるものはアルファ版ですので、インストールしない方がいいです。Windows 10 ver.1709には正式版がプリインストールされています。
Re: (スコア:0)
半年毎に意味が変わるような設定情報だと純正ツールでも古い値を参照・変更してしまうような事態が十分起きるでしょう。
EMETも設定もマイクロソフトの純正品ですし。EMETは10をサポートしていないから10で意味がないのはしょうがないとしても8.1のEMETとWindows Defender Security Centerが正常に機能しないのはおかしいでしょ。
まあこういうことはあってはいけないけどよくあるよねーっていう。
Re: (スコア:0)
Windows Defender Security Centerがあるのは、Windows 10 ver.1709以降です。Windows 10 ver.1703ではオプションでした。Windows8系にはありません。
EMETでなく (スコア:0)
Symantec Endpoint Protection14の汎用エクスプロイト緩和機能は
どうなのでしょうか?
こちらも、オプトインしていないやつを何とかする機能で、
是非知りたいです。
Re: (スコア:0)
セキュリティは装甲板ではないので枚数に比例して強度が上がることはない
どちらかというと鎖なので弱いコマをちょっと継げば強いコマを強くするより強かったりもするし
両端より後ろを強化しても何の効果もなかったりもする
Re:EMETでなく (スコア:1)
そりゃねーわ
だから偏向記事はやめろと (スコア:0)
> 実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみだが、
> Microsoftでもこの点を除いては仕様通りに動作しており、脆弱性ではないと説明している
であって、大した問題でもない。
ASLRの適用を全部GUIでマニュアルもなくやって、しかも結果をチェックしないという人もわずかにはいるかもしれないから
「表示の問題」は修正されるだろうけど、
ある程度自動化されたキッティングをしている、結果を確認している状況では自然と問題に気付くので問題回避されてる
Re: (スコア:0)
これ、一般人が「結果をチェック」できるものなの?
Re: (スコア:0)
> これ、一般人が「結果をチェック」できるものなの?
一般人がASLRを素人知識のまま自力で設定する(もちろん反映確認もしない)という素晴らしいシナリオですね
※ もちろん「表示上のバグ」は直すべきだし直すことは確定している
Re: (スコア:0)
確認できると確認しないは違う
Re: (スコア:0)
表示と設定内容が一致してても、一般人には結果が良くなったのか悪くなったのか判定しようがないな
Re: (スコア:0)
どの辺が偏向??
間違い探し (スコア:0)
一箇所だけ「ASRL」になってます。ど~こ~だ?
#って一番最初のASLRって何ぞやって部分なのがなんだかなぁ
Re: (スコア:0)
明らかに冗長な文章が付いて居るのは、間違い探しの難易度アップの為だったか。