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

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#817544BetaNewsの記事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をいったんオフにし、再度オンにすることで有効なレジストリ値をセットすることも可能だ。なお、「既定値を使用する(<オン>)」を選択した場合は有効なレジストリ値がセットされないので注意が必要だ。

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の記事)。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2017年11月23日 12時14分 (#3317394)

    だったらそれだけ書けばよいのでは…。この長文の意味はなんなんだ。
    いや技術記事としては面白いけど、そうとわかるように書いてよ。

    実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみだが、Microsoftでもこの点を除いては仕様通りに動作しており、脆弱性ではないと説明している

    • 文章を書くときに長文になる人は要点だけを抜き出す力が乏しいんだと思いますよ
      アレもコレも入れたら分かりやすいと思って入れましたという作者の意に反して読者は読みにくくなるのに気がつかないオチ

      親コメント
      • by Anonymous Coward

        > 文章を書くときに長文になる人は要点だけを抜き出す力が乏しいんだと思いますよ
        つまり、全ての記事は「特に気にする事は無い」の一文に要約出来るという事だな。

    • 「設定すべきレジストリの値を設定しませんでした」というだけの話に技術記事として面白い要素なんかあるか? Windows as a Serviceとか言い出してからMS製品の品質低下はマジ異常とかぜんぜん技術的でない感想くらいしかつけられそうにない。

      • まるで以前は邪悪なM$製品の品質が高かったかのような言い方だなww

        http://toyokeizai.net/articles/-/122089?page=4 [toyokeizai.net]

        私はWindows95を予定どおりに発売するために、全力で仕事をしました。その結果、きちんと1995年8月24日にグローバル版が発売されました。しかし発売当時、Windows95には約3500個のバグが残っていました。私たちはそれを知っていましたが、そのまま発売することになりました。

      • by Anonymous Coward

        あの大企業だってやらかすのだから俺達がやらかすのは仕方がない。
        あの大企業だって見落とすのに俺たちに何ができるのか。

    • Microsoftの時は範囲広くなるように書く
      他の時は範囲狭くなるように書く
      というのがここの特徴(ここだけじゃないが)かと。

      Linuxカーネル脆弱性なんかそうですよね。
      Androidと言う普及デバイススルーはデカい。
      コメントでそこを書く方が居る(感謝)ので辛うじて救われてる感じ。

    • その引用文ひとつとっても「だが」の使い方おかしいし、技術だけ溜め込んで論理の出来てないタイプなんでしょうね。

  • by Anonymous Coward on 2017年11月23日 11時48分 (#3317376)

    発表記事に違和感があるなあ。レジストリなんて変更しなくても、管理者権限のあるPowerShellで「 Set-ProcessMitigation -System -Enable BottomUp 」を実行するだけだろうになあ。Windows 10 ver.1709での動作を見る限り、レジストリの値の説明も間違っていそうだ。

    • by Anonymous Coward

      レジストリのMitigationOptionsはWindowsのバージョンによって値の意味が多少異なるようです。Windows 10 ver.1703/1709でそれぞれ変更が入っていますし、レジストリの値をいじるのは危険です。リンク先の記事にあるものはWindows8系の設定で、Windows 10系ではありません。

      あと、Set-ProcessMitigationですが、www.powershellgallery.comにあるものはアルファ版ですので、インストールしない方がいいです。Windows 10 ver.1709には正式版がプリインストールされています。

      • by Anonymous Coward

        半年毎に意味が変わるような設定情報だと純正ツールでも古い値を参照・変更してしまうような事態が十分起きるでしょう。
        EMETも設定もマイクロソフトの純正品ですし。EMETは10をサポートしていないから10で意味がないのはしょうがないとしても8.1のEMETとWindows Defender Security Centerが正常に機能しないのはおかしいでしょ。
        まあこういうことはあってはいけないけどよくあるよねーっていう。

        • by Anonymous Coward

          Windows Defender Security Centerがあるのは、Windows 10 ver.1709以降です。Windows 10 ver.1703ではオプションでした。Windows8系にはありません。

  • by Anonymous Coward on 2017年11月23日 11時53分 (#3317382)

    Symantec Endpoint Protection14の汎用エクスプロイト緩和機能は
    どうなのでしょうか?
    こちらも、オプトインしていないやつを何とかする機能で、
    是非知りたいです。

    • by Anonymous Coward

      セキュリティは装甲板ではないので枚数に比例して強度が上がることはない
      どちらかというと鎖なので弱いコマをちょっと継げば強いコマを強くするより強かったりもするし
      両端より後ろを強化しても何の効果もなかったりもする

  • by Anonymous Coward on 2017年11月23日 13時01分 (#3317421)

    > 実際のところおかしな点はExploit ProtectionのボトムアップASLRの設定のみだが、
    > Microsoftでもこの点を除いては仕様通りに動作しており、脆弱性ではないと説明している

    であって、大した問題でもない。

    ASLRの適用を全部GUIでマニュアルもなくやって、しかも結果をチェックしないという人もわずかにはいるかもしれないから
    「表示の問題」は修正されるだろうけど、
    ある程度自動化されたキッティングをしている、結果を確認している状況では自然と問題に気付くので問題回避されてる

    • by Anonymous Coward

      これ、一般人が「結果をチェック」できるものなの?

      • by Anonymous Coward

        > これ、一般人が「結果をチェック」できるものなの?

        一般人がASLRを素人知識のまま自力で設定する(もちろん反映確認もしない)という素晴らしいシナリオですね

        ※ もちろん「表示上のバグ」は直すべきだし直すことは確定している

        • by Anonymous Coward

          確認できると確認しないは違う

      • by Anonymous Coward

        表示と設定内容が一致してても、一般人には結果が良くなったのか悪くなったのか判定しようがないな

    • by Anonymous Coward

      どの辺が偏向??

  • by Anonymous Coward on 2017年11月24日 8時17分 (#3317673)

    一箇所だけ「ASRL」になってます。ど~こ~だ?

    #って一番最初のASLRって何ぞやって部分なのがなんだかなぁ

    • by Anonymous Coward

      明らかに冗長な文章が付いて居るのは、間違い探しの難易度アップの為だったか。

typodupeerror

普通のやつらの下を行け -- バッドノウハウ専門家

読み込み中...