アカウント名:
パスワード:
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に悪意のあるコードを流し込
SMRAM に悪意のあるコードを流し込む概念は既出で、今回はそれの新しい方法っぽいな。
APIC に特別な割り込みがかかった場合に、 SMRAM として確保された領域のコードが実行される。この領域はBIOS実行時にROMから割り込みハンドラがコピーしてあって、ring -2 でのみアクセスできる。 ring -1(VMX root) ですら読み書きできないので、油断して色々と書いてある。しかし、x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で、ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる。一
デタラメな要約ですね。
> x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で今回利用したのはCPU内の割り込みコンロトーラ(Local APIC)のレジスタ領域をSMRAM上に被せたのであってメモリのリマップ機能は使っていない。
> ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる書き換えたのはring 0で書き換える事ができるLocal APICレジスタ。レジスタに書き込んだ値を命令として実行させようとしたが、実際に効果があるのはデータアクセスだけで命令読み込みはSMRAMか
#2863684ですが、なんとなく雰囲気はわかってきました。
1. APICレジスタはメモリアドレス0に固定されている2. APICレジスタの中にSSMのSMIがあるから、やっぱり固定されている3. LAPICをメモリアドレスSSM関連データ構造部分にリマップできる。4. (3)の状態だと、該当部分のREADはメモリからではなくLAPICレジスタから読んでしまう。5. SMMのエントリポイントは、途中でGDTをセットするが、この値もLAPICでごまかせる(?)6. いい感じにジャンプ命令もあるからRong -2で好きな所に移動できる。
GDTのからみはあってるのかよく分からない…
1と6は微妙ですが流れとしてはあってます
ありがとうございます。
割込み禁止にしていたずらすれば、該当CPUスレッドのカーネルがLAPICレジスタを触ることも無いような気がするので、気づかれずに済ますこともそんなに難しくないのかな…。
たまにこういう話もできると個人的に楽しいですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
sandy bridge 以降は大丈夫? (スコア:1)
Re: (スコア:5, 参考になる)
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に悪意のあるコードを流し込
Re: (スコア:5, 参考になる)
SMRAM に悪意のあるコードを流し込む概念は既出で、今回はそれの新しい方法っぽいな。
APIC に特別な割り込みがかかった場合に、 SMRAM として確保された領域のコードが実行される。この領域はBIOS実行時にROMから割り込みハンドラがコピーしてあって、ring -2 でのみアクセスできる。 ring -1(VMX root) ですら読み書きできないので、油断して色々と書いてある。しかし、x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で、ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる。一
Re: (スコア:1)
デタラメな要約ですね。
> x86_64 には様々なメモリのリマップ機能があって、何かをそのセキュア領域にマッピングした上で
今回利用したのはCPU内の割り込みコンロトーラ(Local APIC)のレジスタ領域をSMRAM上に被せたのであって
メモリのリマップ機能は使っていない。
> ring 0 権限のみの操作に見せかけて、制限をスルーして書き込むことができる
書き換えたのはring 0で書き換える事ができるLocal APICレジスタ。レジスタに書き込んだ値を命令として実行さ
せようとしたが、実際に効果があるのはデータアクセスだけで命令読み込みはSMRAMか
Re: (スコア:0)
#2863684ですが、なんとなく雰囲気はわかってきました。
1. APICレジスタはメモリアドレス0に固定されている
2. APICレジスタの中にSSMのSMIがあるから、やっぱり固定されている
3. LAPICをメモリアドレスSSM関連データ構造部分にリマップできる。
4. (3)の状態だと、該当部分のREADはメモリからではなくLAPICレジスタから読んでしまう。
5. SMMのエントリポイントは、途中でGDTをセットするが、この値もLAPICでごまかせる(?)
6. いい感じにジャンプ命令もあるからRong -2で好きな所に移動できる。
GDTのからみはあってるのかよく分からない…
Re:sandy bridge 以降は大丈夫? (スコア:0)
1と6は微妙ですが流れとしてはあってます
Re: (スコア:0)
ありがとうございます。
割込み禁止にしていたずらすれば、
該当CPUスレッドのカーネルがLAPICレジスタを触ることも
無いような気がするので、気づかれずに済ますこともそんなに難しくないのかな…。
たまにこういう話もできると個人的に楽しいですね。