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

1997年から2010年までのIntel製CPUに脆弱性? 31

ストーリー by hylom
どんなものか 部門より

1997年から2010年までのインテル製CPUに脆弱性、ルートキット埋め込み可能で対策はほとんどなし」という話が出ている。セキュリティ関連イベント「Black Hat」で発表されたものとのこと。

x86系CPUはSystem Management Mode(SMM)と呼ばれる動作モードを備えている。SMMにはシステム管理割り込み(SMI)を発生させることで遷移でき、SMM時にはCPU内のSMRAMと呼ばれる領域に記録されているコードが実行される。

OSや実行中アプリケーションからはSMMへの遷移は認識できないため、SMMを悪用して悪意のあるコードが実行された場合、ウイルス対策ソフトやOS側ではそのことを検知できず、対処も難しい。

ただし、SMRAMへのアクセス方法は限定されるうえ、SMIは基本的にはハードウェアによって生成される外部割り込みであるため、悪用は難しいと言われていた(日経ITproの解説記事)。

Engadget Japaneseの記事によると、今回発表されたのはこのSMMを利用して悪意のあるコードを実行できるという脆弱性のようだ。今年3月には、「複数のBIOS実装においてSMRAMの領域外を参照するSMM関数呼び出しが可能な問題(JVNVU#94580091)」が明らかになっているが、これが今回発表されたIntel CPUの脆弱性と関連するかは不明。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • IBN5100 (スコア:3, おもしろおかしい)

    by Anonymous Coward on 2015年08月12日 17時28分 (#2863368)

    1997年から2010年までのCPUに脆弱性がある。
    Steins;Gateの舞台の2010年の最新PCでSERNにハッキングすると即人生終了。
    1997年以前のPCでも何らかの脆弱性がある。よってSERNにハッキングするには
    IBN5100が必要不可欠だったんだよ!!

    ΩΩΩな、なんだってー!?

  • by miyuri (33181) on 2015年08月12日 18時38分 (#2863415) 日記

    CPU内のSMRAMと呼ばれる領域に記録されているコードが実行される。

    CPU外なので。

  • by Anonymous Coward on 2015年08月12日 16時57分 (#2863350)
    なのは何故
    • by annoymouse coward (11178) on 2015年08月12日 17時26分 (#2863364) 日記

      sandy bridge 以降は,今のところ大丈夫です

      blackhat.com に論文と発表スライドが,github.com に実証コードが upload されています
      https://www.blackhat.com/us-15/speakers/Christopher-Domas.html [blackhat.com]
      https://github.com/xoreaxeaxeax/sinkhole [github.com]

      ざっと目を通した感じでは
      このアタック方法の肝は,APICのレジスタをメモリマッピングする仕組みを悪用して
      SMRAMに悪意のあるコードを流し込む点にあります.

      しかし彼の方法でコードが流し込めるのはNehalemまでで,
      sandy bridge 以降ではCPUの挙動が変わったのでコードが流し込めないとのことです.

      親コメント
      • by Anonymous Coward on 2015年08月12日 18時35分 (#2863412)

        SMRAM に悪意のあるコードを流し込む概念は既出で、今回はそれの新しい方法っぽいな。

        APIC に特別な割り込みがかかった場合に、 SMRAM として確保された領域のコードが実行される。この領域はBIOS実行時にROMから割り込みハンドラがコピーしてあって、ring -2 でのみアクセスできる。 ring -1(VMX root) ですら読み書きできないので、油断して色々と書いてある。しかし、x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で、ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる。一旦この割り込みハンドラに任意コードを書いておけば、実際に割り込みが発生した時にロングジャンプするなりして好きなコードを実行できる。この時 CPU が入っている ring -2 という超特権モードでは、CPU のセキュリティ機能の一部もスルーできる。

        SMRAM は CPU から見えるメモリの一部を指定しているだけで、そういうメモリ素子があるわけではない。だから、電源を抜いてから信頼できる ROM から起動すれば、消える。

        親コメント
        • by Anonymous Coward on 2015年08月12日 23時44分 (#2863551)

          デタラメな要約ですね。

          > x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で
          今回利用したのはCPU内の割り込みコンロトーラ(Local APIC)のレジスタ領域をSMRAM上に被せたのであって
          メモリのリマップ機能は使っていない。

          > ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる
          書き換えたのはring 0で書き換える事ができるLocal APICレジスタ。レジスタに書き込んだ値を命令として実行さ
          せようとしたが、実際に効果があるのはデータアクセスだけで命令読み込みはSMRAMから読み込まれてしまい失敗。
          しかし、Locl APICレジスタ被せでGDTのアドレス計算元のデータが書き換えられて運良くring -2の処理で使用する
          GDTがSMRAM外のring 0で書き換え可能な領域に飛び出す事を見つけたのでring -2のまま任意の場所にジャンプさ
          せる事に成功。

          こんな感じですかね。
          最初にring 0を取らないといけないのがハードル高いですが、やられたら面倒かな。

          親コメント
          • by Anonymous Coward

            このコメントを見ると元コメントは正確ではないと予測はできるけど、出鱈目というほど間違っても居ないと思う。

            > メモリのリマップ機能は使っていない。
            汎用のメモリ空間を扱うためのリマップ機能ではないけれど、
            レジスタ領域のマッピングを被せてるんなら大差ないと思う。

            > レジスタ被せでGDTのアドレス計算元のデータが書き換えられて
            > ring 0で書き換え可能な領域に飛び出す
            コレのことでは?

            > 最初にring 0を取らないといけないのがハードル高いですが、やられたら面倒かな。
            カーネル(ゲストOSでも良い?)まで食われた場合に被害が増えるかも的な感じですね。
            ゲストOSからの昇格だと厄介だけど、ホストOSの場合そこまで食われてる時点もうね…

            • by Anonymous Coward

              細かい事はどうでもいいという人には同じような物かもしれませんが、残念ながら全くデタラメです。
              肝心のring 0 権限のみの操作に見せかけて、制限をスルーして書き込むなんて事はやってません。

              • by Anonymous Coward

                「ring 0権限で、ring 0では書き込む権限のない領域を書き換える」

                「ring 0 権限のみの操作に見せかけて、制限をスルーして書き込む」
                にどれほどの違いがあるのか詳しくお願いします。
                制限されてるのに書き換えられたんだから制限をスルーしてるじゃないか。

              • by Anonymous Coward

                ring 0ではring 0の制限でできる事をやっているのでどちらの表現も間違っています

              • by Anonymous Coward

                あー、あれか。「バグじゃない、仕様です」って話なのか。
                結果としてring 0で適応「されるべき」制限を一部回避してるわけだけど、
                ring 0で実行「できてる」以上それはring 0の操作である、と。

                ねーよ

          • by Anonymous Coward

            わかるようなわからないような。

            Local APICのMMIO用のマッピング場所は
            Ring 0でほいほい移動できるものなんですか?

            > ring -2の処理で使用するGDTがSMRAM外のring 0で書き換え可能な領域に飛び出す
            ここが諸悪の根源という理解でいいんでしょうか。

          • by Anonymous Coward

            #2863684ですが、なんとなく雰囲気はわかってきました。

            1. APICレジスタはメモリアドレス0に固定されている
            2. APICレジスタの中にSSMのSMIがあるから、やっぱり固定されている
            3. LAPICをメモリアドレスSSM関連データ構造部分にリマップできる。
            4. (3)の状態だと、該当部分のREADはメモリからではなくLAPICレジスタから読んでしまう。
            5. SMMのエントリポイントは、途中でGDTをセットするが、この値もLAPICでごまかせる(?)
            6. いい感じにジャンプ命令もあるからRong -2で好きな所に移動できる。

            GDTのからみはあってるのかよく分からない…

            • by Anonymous Coward

              1と6は微妙ですが流れとしてはあってます

              • by Anonymous Coward

                ありがとうございます。

                割込み禁止にしていたずらすれば、
                該当CPUスレッドのカーネルがLAPICレジスタを触ることも
                無いような気がするので、気づかれずに済ますこともそんなに難しくないのかな…。

                たまにこういう話もできると個人的に楽しいですね。

        • by Anonymous Coward

          突っ込んだら負け?

          タレコミにリンクのあるengadgetの記事
          > CPU そのものに仕込まれるため、ユーザーが OS をクリーンインストールしなおしても感染は取り除けず、
          > UEFI/BIOS をすべてクリアしても何の意味もありません。

          # 誰がどこにそのプログラムを仕込むんだよ

          • 突っ込んだら負け?

            色々と面倒だから、Intelのマニュアルを読むのを勧める程度で。

            親コメント
            • by Anonymous Coward

              あなたが読み直してみた方がいいのでは?
              IntelのCPUにはNVRAMは乗ってない。
              OTPメモリはあるみたいだけど、パッケージのピンには出てない。

          • by Anonymous Coward

            engadgetの記事を信用すると、CPU内に不揮発性RAMがあるって話になっちゃうよ…

            マイクロコードのアップデートさえ外から読み込むのに、そんな不揮発性RAM持っているって話自体信用ならない気が

          • by Anonymous Coward

            engadgetの記事が間違ってる。

        • by Anonymous Coward

          >ring -2 でのみアクセスできる。 ring -1(VMX root) ですら読み書きできないので

          こんな場所あるのか?

        • by Anonymous Coward

          > SMRAM に悪意のあるコードを流し込む概念は既出

          どれくらい既出かというと、ITproの記事 [nikkeibp.co.jp]によるとなんと2006年にはすでにSMMを使ったRootkitの可能性が指摘されて、2008年にはコンセプトが存在したようだ。
          今年の3月 [jvn.jp]にもSMMがらみの脆弱性が報告されてるし、ぜんぜん「忘れ去られた」ってレベルじゃないな。

  • by Anonymous Coward on 2015年08月12日 21時36分 (#2863494)

    AMD最強ってことですね(違う

    • by Anonymous Coward

      AMDは「調査中」となっていたので、少なくともexploitそのままでは動かないが、原理的に攻略不可能かどうかはまだわからないようだ。

    • by Anonymous Coward

      各社のPC記事からどんどんAMDのスペースが削られて、
      AMD使いとしては非常に寂しいところ…

      #そういう私も次はIntelで組む予定

  • by Anonymous Coward on 2015年08月13日 20時49分 (#2864116)

    1997年というと Pentium II からかな
    2010年というと Core i7 までってことでいいのかな

    # i486 はセーフ?

    • by Anonymous Coward

      i486SLにはSMMがあったけど(そもそも当初は電源管理に使うことが想定されていた機能)、APICはまだだったかな。

typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...