Copernicus 2を
Download
Report
Transcript Copernicus 2を
署名されたBIOS強制の無効化
(ボーナストラックとして最新の研究結果のプレビューも)
Corey Kallenberg
John Butterworth
Sam Cornwell
Xeno Kovah
© 2013 The MITRE Corporation. All rights reserved.
|2|
BIOSルートキット
プラットフォームで最初に実行されるので非常に強力
OSの再インストールでも消去されない
あまり注目されない
X86プラットフォームでもっとも強力な「システム管理モード」を
利用できる [5][10][11][12]
しかしBIOSルートキットはまだ少ない
– OSのルートキットと比較して、移植性が低く実装も困難
– 今後、OSの堅牢になるにつれて増加が予想される
© 2013 The MITRE Corporation. All rights reserved.
|3|
最近のBIOSのセキュリティ状況
2012 “Hardware Backdooring Is Practical” by J. Brossard [7]
– CoreBootなどのオープンソースファームウェアにより、BIOSルートキットの作成
は以前よりも容易に
2013 “Evil Maid Just Got Angrier: Why Full-Disk Encryption With TPM is
Insecure on Many Systems” Yuriy Bulygin [3]
– 不適切な計測実装によって、TPM内の計測結果を改ざんし、攻撃者はTPMサポー
トが有効なBitLockerを回避できる
2013 “A Tale Of One Software Bypass Of Windows 8 Secure Boot” Bulygin et al.
[4]
– フラッシュチップがロックされていなければ、Secure Bootを回避できる
– 重要なEFIの非揮発性変数が書き込み可能であれば、Secure Bootを回避できる
2013 “BIOS Chronomancy” Butterworth et al. [18]
– 適切に実装されたBIOSでも、攻撃者は計測コードの信頼のルートを改ざんできる
– 攻撃者はBIOSの再フラッシュにも耐えられる
– 「タイミングベースBIOS」はBIOS内の検出コードでBIOS内の攻撃者を検出でき
る
そして今回のプレゼンテーション
© 2013 The MITRE Corporation. All rights reserved.
|4|
BIOSの保護
これまでの結果は、攻撃者がSPIフラッシュチップのプラット
フォームファームウェア(BIOSもしくはUEFI)に手が出せることを前
提にしていた
ファームウェアの更新に署名を強制することで、悪意のあるフラッ
シュチップの書き込みから保護できる
最近の多くのシステムでは、署名済みファームウェアの更新をサ
ポート、もしくは義務付けている1
1
このあと詳しく…
© 2013 The MITRE Corporation. All rights reserved.
|5|
実装方法
Intelがフラッシュチップを改ざんから保護するためのメカニズムを
提供している
– 詳細はそれぞれのハードウェアのCPU/(G)MCH/ICH/PCHのドキュ
メントに
– こうした保護手段は比較的変更されていない
保護メカニズムを使用して署名済みBIOSを強制させるのは、それぞ
れのOEMの責任
– これには非常に複雑な保護メカニズムを適切に設定することも含
まれる
– また、バグのない更新ルーチンを実装することも含まれる
© 2013 The MITRE Corporation. All rights reserved.
|6|
Follow Along
フラッシュ内の改ざん保護設定を読みだすには、筆者および筆者の
同僚によるツールがある
– http://www.mitre.org/capabilities/cybersecurity/overview/cybersecur
ity-blog/copernicus-question-your-assumptions-about
– もしくは googleで “MITRE Copernicus”を検索
© 2013 The MITRE Corporation. All rights reserved.
|7|
BIOS_CNTL
上記はICHのBIOS_CNTL レジスタの一部
BIOS_CNTL.BIOSWEはフラッシュチップの書き込み許可
BIOS_CNTL.BLEはOEMがBIOSWEを保護し、SMMルーチンを実装
する手段を提供
from: http://www.intel.com/content/www/us/en/chipsets/6-chipset-c200-chipset-datasheet.html
© 2013 The MITRE Corporation. All rights reserved.
|8|
SMM BIOSWEによる保護 (1 of 2)
SMMコード
BIOS_CNTL
BIOSWE = 0
BLE = 1
Ring 0カーネル
コード
攻撃者がBIOSWEを1に設定し、BIOSを書き換えようとする
© 2013 The MITRE Corporation. All rights reserved.
|9|
SMM BIOSWEによる保護 (2 of 2)
SMI#
SMMコード
BIOS_CNTL
BIOSWE = 1
BLE = 1
Ring 0カーネル
コード
BLEが1の場合、BIOSWEへの書き込みによりCPUはシステムマ
ネージメント割り込み(SMI#)を発生させる
© 2013 The MITRE Corporation. All rights reserved.
| 10 |
SMM BIOSWEによる保護 (2 of 2)
SMMコード
RSM
BIOS_CNTL
BIOSWE = 1
BLE = 1
Ring 0カーネル
コード
カーネルコードに復帰する前に、SMMコードはただちにBIOSWEを
0に戻す
© 2013 The MITRE Corporation. All rights reserved.
| 11 |
SMM BIOSWEによる保護 (2 of 2)
SMMコード
BIOS_CNTL
BIOSWE = 0
BLE = 1
Ring 0カーネル
コード
その結果、非SMMコードが実行中の間BIOSWEは常に0になる
© 2013 The MITRE Corporation. All rights reserved.
| 12 |
BIOSWEによる保護 (1 of 2)
set_biosweはBIOS_CNTLレジスタのBIOSWEビットをセットする
シンプルなプログラム
BIOS_CNTL = 0xBなら BIOSWEをセット
BIOS_CNTL = 0xAなら BIOSWEはセットされていない
BIOSWE=1にしようとしたが、SMMがBIOSWEの値を保護している
ため失敗していることに注目
© 2013 The MITRE Corporation. All rights reserved.
| 13 |
BIOSWEによる保護 (2 of 2)
BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1、
オープンソースのFlashromツールでBIOSチップへの書き込みをし
ても、失敗する
1
Command: flashrom –p internal:laptop_I_want_a_brick,ich_spi_mode=swseq –w bios.bin
© 2013 The MITRE Corporation. All rights reserved.
| 14 |
Protected Range SPI Flash Protections
保護範囲レジスタでもフラッシュチップへの書き込み保護が可能
© 2013 The MITRE Corporation. All rights reserved.
| 15 |
HSFS.FLOCKDN
HSFS.FLOCKDNがセットされると、Protected Range レジスタに
対する変更はできない
© 2013 The MITRE Corporation. All rights reserved.
| 16 |
Intelによる保護のまとめ
Protected Rangeと BIOS_CNTL レジスタで、プラットフォーム
ファームウェアを含むSPIフラッシュチップの保護が可能
プラットフォームがリセットされるとこうした保護もリセットされ、
電源投入時にフラットフォームファームウェアによって適切に設定
しなければならない
© 2013 The MITRE Corporation. All rights reserved.
| 17 |
OEM BIOS更新ルーチン
DellのBIOSをケーススタディに、Intelのフラッシュ保護メカニズム
を使った署名済みBIOSの強制を、OEMがどのように実装している
かを取り上げる
対象はDell Latitude E6400 BIOSのコードだが、問題のBIOS更新
ルーチンは他の20以上のDell製品で使われている
© 2013 The MITRE Corporation. All rights reserved.
| 18 |
Dell E6400 BIOSの更新
1. ファームウェア更新バイナリ (“HDR”)がカーネルメモリにコピー
2.
3.
4.
5.
される
– デフォルトでは、HDRファイルを“rbuパケット” にパケット化
する
– HDRにはBIOS更新以外のものも含まれる (キーボードコント
ローラ、マネージメントエンジンなど)
CMOSのバイト0x78が反転する
システムがリブートする
CMOSのビットが反転しているので、BIOSがSMIを生成し、
SMM BIOS更新ルーチンを実行する
BIOS更新ルーチンの実行後は、Intelのフラッシュ保護メカニズム
がセットされ、他のフラッシュチップへの書き込みは禁止される
© 2013 The MITRE Corporation. All rights reserved.
| 19 |
BIOS更新ルーチン (1 of 2)
OSカーネル
ドライバー
$RPK… Packet=1, size=0x400
Copyright 2011 Dell Inc.. A29
$RPK… Packet=2, size=0x1000
00 00 FF FF FF FF FF…
• OSが新BIOSイメージをアドレス空間ごと
にパケット化する。各パケットには33バ
イトのrbu_packetヘッダが含まれ、ヘッダ
にはパケットのBIOSイメージの情報の内
容および順序が含まれる
• CMOSのあるビットが反転し、再起動した
BIOSに更新があることを伝える
© 2013 The MITRE Corporation. All rights reserved.
$RPK… Packet=N, size=0x100
EB 39 00 00 00 FF FF FF FF …
| 20 |
BIOS更新ルーチン (2 of 2)
SMM Update Routine
システム管理モード RAM
Copyright 2011 Dell Inc. A29..
FF FF FF FF FF FF FF FF FF FF
…
…
EB 39 00 00 FF FF FF FF FF FF
$RPK… Packet=N-1, size=0x1000
• リブートすると、システム管理モードの
アップデートルーチンがそれぞれのrbu
packetsをチェックし、完全なBIOSイメー
ジを再構築する
• SMM は再構築されたBIOSイメージがDell
によって署名されていることを確認し、
フラッシュに書き込む
© 2013 The MITRE Corporation. All rights reserved.
00 00 FF FF FF FF FF…
$RPK… Packet=N, size=0x100
EB 39 00 00 00 FF FF FF FF FF …
| 21 |
攻撃者の目標と計画
署名済みBIOSが強制されている環境下で、BIOSを任意のイメージ
で再フラッシュする
手段: BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱
性を探す。存在すれば、SMMの制御を奪いBIOSチップの再フラッ
シュが可能になる
メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなけれ
ばならない
SMMは、BIOS更新イメージのメタデータが含まれる33バイトの
rb_packetヘッダをパースする。このパース処理は署名チェックの
前に実行される。
© 2013 The MITRE Corporation. All rights reserved.
| 22 |
攻撃面
http://linux.dell.com/libsmbios/main/RbuLowLevel_8h-source.html
© 2013 The MITRE Corporation. All rights reserved.
| 23 |
パケットのパース
SMMは最初にページごとにそろえられたASCII署名によってRBUパ
ケットの位置を特定する
位置を特定すると、RBUパケットはSMMのデータエリアに保管され、
その後の計算に使われる
© 2013 The MITRE Corporation. All rights reserved.
| 24 |
不思議なGEOR?
SMMがBIOSイメージを再構成する際に、BIOSイメージが再構成さ
れるメモリ空間に初期文字列“GEOR”を書き込む
© 2013 The MITRE Corporation. All rights reserved.
| 25 |
RBUパケットのコピー
最終的に、RBUパケットからBIOSイメージがメモリの再構築エリアにコ
ピーされる
インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ
(g_pktSizeMinusHdrSize)であることに注目
© 2013 The MITRE Corporation. All rights reserved.
| 26 |
RBUパケットパースの脆弱性
コピー先とコピー元はrbu_packetから得た攻撃者によるデータ
攻略可能なバッファオーバーフロー
© 2013 The MITRE Corporation. All rights reserved.
| 27 |
回避策の欠如
システム管理モードには、最近のアプリケーションに見られるよう
な攻略回避策がまったくない
ASLR、NX、スタックカナリアなど
つまり、rbu_packetのコピー関数の戻りアドレスなど、改ざんに
よってなんでも標的にできる
© 2013 The MITRE Corporation. All rights reserved.
| 28 |
脆弱性の攻略
RBUパケットのデータにはいくつもの制限があり、このバッファ
オーバーフローの攻略には工夫が必要
© 2013 The MITRE Corporation. All rights reserved.
| 29 |
制限の概要
コピー先は文字列“GEOR”で初期化されているエリアでなければなら
ない
コピー先は戻りアドレスよりも下位のメモリでなければならない
書き換えすぎると、インラインコピーで失敗して戻れなくなる
コピー元の位置は、攻撃者がコントロールできるアドレス空間のデー
タが戻りアドレスを上書きするようになっていなければならない
他にも
© 2013 The MITRE Corporation. All rights reserved.
| 30 |
More Problems
コピー元、コピー先、コピーサイズはいずれも、同じrbu_packetの
メンバーから計算される
いずれかを変更すると他の値も変更される
前述の条件すべてを満たさねばならない
この脆弱性の攻略は方法は制約充足問題としてモデル化できる
© 2013 The MITRE Corporation. All rights reserved.
| 31 |
制約系
通常は、初期化ルーチンが適切なコピー先を“GEOR”文字列で初期化
する
初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になる
ので、ここではrbu_packet.totPktsを1にすることでこの初期化ルーチ
ンをスキップする (上記のコードからわかるように、totalDataSizeは0
になる)。
つまり本来あるべき“GEOR”文字列がアドレス空間に存在しなくなる
ので、 *copy_dest = “GEOR”という制約を満たすように“GEOR”を何
らかの方法で押し込まなければならない
© 2013 The MITRE Corporation. All rights reserved.
| 32 |
偽のGEOR
脆弱なmemcpyが実行されるのは、コピー先にGEOR文字列が含まれ
る場合
ここではメモリマップドI/Oを実行するWindowsのカーネルドライバを
使い、上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能
な限り上位のメモリにGEOR文字列を書き込む
BIOS更新プロセスと同様に、ソフトリブートではRAMの内容が変わら
ないという点を利用していて、書き込んだGEOR文字列もアドレス空
間に残る
© 2013 The MITRE Corporation. All rights reserved.
| 33 |
RBUパケットの解
こうした制約を考慮し、サニティチェックをパスしつつ適切な戻り
アドレスで上書きできるrbu_packet設定を総当たりで探し出す
© 2013 The MITRE Corporation. All rights reserved.
| 34 |
悪意のあるBIOS更新
SMM更新ルーチン
システム管理モード RAM
パケット再構成空間
Shellcode
Shellcode
Shellcode
….
• 異常に大きなパケットサイズとパケット
のシーケンス番号によりパケットの再構
成エリアがシステム管理RAMにオーバー
フローする
• これにより、システム管理RAM内の戻り
アドレスを上書きし、BIOS更新ルーチン
のコンテキストのままEIPのコントロール
を奪える
© 2013 The MITRE Corporation. All rights reserved.
$RPK.. Packet=0x83f9, size=0xfffe
Shellcode
Shellcode
…
Shellcode
| 35 |
PoCのデモ映像
http://youtu.be/V_ea21CrOPM
© 2013 The MITRE Corporation. All rights reserved.
| 36 |
脆弱性の結論
この脆弱性は、署名済みBIOSが強制されているにも関わらず、攻撃
者がBIOS更新プロセスを乗っ取り、BIOSを任意のイメージで再フ
ラッシュできる
CVE-2013-3582
他の更新ルーチンにも同様な脆弱性が存在する可能性
– 署名済みBIOS更新の強制が考慮されていない時期に開発された可
能性が高い
– BIOSイメージのプロプライエタリな性格上、更新用のコードを特
定しリバースエンジニアするのは困難であり、コードのピアレ
ビューはほとんど実施されていない
DellのBIOS更新ルーチンの特定および攻略は非常に困難だったが、
もしかすると簡単な方法があったかもしれない
© 2013 The MITRE Corporation. All rights reserved.
| 37 |
Intelの保護メカニズムの攻撃
BIOS_CNTLと保護範囲/FLOCKDNレジスタは基本的に、フラッ
シュへの書き込みに対する保護手段である
興味深いことに、ほとんどのOEMがフラッシュの保護手段には
BIOS_CNTL レジスタしか使っていないようだ
システム管理モードRAMのセキュリティがフラッシュチップのセ
キュリティに危険な形で関係することになる
© 2013 The MITRE Corporation. All rights reserved.
| 38 |
過去のバグふたたび
2009年に Rafal WojtczukとLoic Duflotが、 Intelアーキテクチャの
キャッシュ機能を悪用し、システム管理モード (SMM)1 2のコンテキ
ストで任意のコードを実行できる脆弱性を発見
このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に
対する一時的な攻撃方法と考えられており、SMRAMに書き込まれ
た攻撃者のコードはプラットフォームリセットで消去されるとされ
ていた
しかし、システムによってはキャッシュ毒入れ攻撃で任意のBIOSに
書き換えが可能に
– BIOSはSMRAMの管理を担当するため、攻撃者にSMM内への恒久
的な侵入を許すことにつながる
© 2013 The MITRE Corporation. All rights reserved.
| 39 |
キャッシュ毒入れ攻撃の概要 (1 of 2)
CPUがSMMのコンテキストで実行中の場合にのみ、SMRAMは書き
込みおよび読み込みが可能で、SMM以外のコンテキストでの
SMRAMへのアクセスは メモリコントローラハブ (MCH)がブロック
する
SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で、読
み書きは直接RAMに行われ、キャッシュは使われない
© 2013 The MITRE Corporation. All rights reserved.
| 40 |
キャッシュ毒入れ攻撃の概要 (2 of 2)
しかし、メモリタイプ範囲レジスタ(MTRR)でSMRAMを“Write
Back”キャッシュに設定できる
SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込む
ことで、攻撃者はSMRAMに対応するキャッシュエントリに毒入れ
できる
この変更はSMRAMに反映されないが、SMRAMのメモリ位置の
キャッシュラインに反映される
次にCPUがSMMになると、実際のSMRAMの内容ではなく、
SMRAMのキャッシュエントリにあるSMMコードを実行する
これによりSMMコンテキストで任意のコードが実行される
© 2013 The MITRE Corporation. All rights reserved.
| 41 |
キャッシュ攻撃 (1 of 2)
DFF00000= badc0de
CPU
RAM
CPU キャッシュ
位置
内容
Location
DFF00000
Contents
badc0de
A0000
A1000
FF FF FF
F1 00 1B
C1000
E9 FF 00
…
…
F0000
00 00 00
C1000
E9 FF 00
…
…
SMM code
DFF00000
このケースでのSMRAMのベースは DFF00000
まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする
次に、SMRAMの位置に書き込んで、SMRAMに対応するキャッシュ
ラインに毒入れする
© 2013 The MITRE Corporation. All rights reserved.
| 42 |
キャッシュ攻撃 (2 of 2)
EIP=DFF00000
Executing badc0de…
CPU
SMI#
RAM
CPU キャッシュ
位置
内容
位置
DFF00000
内容
badc0de
A0000
A1000
FF FF FF
F1 00 1B
C1000
E9 FF 00
…
…
F0000
00 00 00
C1000
E9 FF 00
…
…
SMM
コード
DFF00000
最後に攻撃者は、システム管理割り込み (SMI#)を発生し、CPUを
SMMに移行させ、毒入れしたキャッシュエントリを実行させる
こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを
実行する
© 2013 The MITRE Corporation. All rights reserved.
| 43 |
BIOSWE キャッシュ攻撃
DFF00000=
RSM1
CPU
RAM
CPU キャッシュ
位置
内容
位置
DFF00000
内容
A0000
0F AA2
A1000
FF FF FF
F1 00 1B
C1000
E9 FF 00
…
…
F0000
00 00 00
C1000
E9 FF 00
…
…
SMMコー
ド
DFF00000
SMMインストラクションのから戻った直後をSMIのエントリポイン
トとして毒入れする
これでSMMはBIOSWEをセットできなくなる
1
RSMはシステムマネージメントopcodeからの戻り
2
0F AA はRSMインストラクションのopcode
© 2013 The MITRE Corporation. All rights reserved.
| 44 |
BIOSWEによる保護を無効化 (1 of 2)
SMM
BIOS_CNTL.BIOSWE = 1
Ring0コード
BIOS_CNTL
ふたたび、攻撃者はBIOSチップの上書きをするためにBIOS書き込
み許可ビットを1にセットする
© 2013 The MITRE Corporation. All rights reserved.
| 45 |
BIOSWEによる保護を無効化 (2 of 2)
SMM
OK: BIOS_CNTL.BIOSWE = 1
Ring0コード
BIOS_CNTL
同様に書き込みに対するSMIが発生するが、今回はSMMはBIOSWE
を0にセットすることなく、ただちに戻る
© 2013 The MITRE Corporation. All rights reserved.
| 46 |
BIOSWEによる保護を無効化のデモ
これでBIOSWEビット (BIOS_CNTL = 0xB)をセットし、BIOSチップを
任意のイメージで書き換えることができる
フラッシュの上書きを防止するという署名済みファームウェアの要件は
こうして回避される
© 2013 The MITRE Corporation. All rights reserved.
| 47 |
毒入れ再フラッシュバグの結論
CERTには VU#255726として報告済み
SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入
され、このバグは新しいシステムのほとんどで修正済み
Important takeaway:
– 大部分のOEMは、フラッシュチップの保護をBIOS_CNTLでしか
実施していないため、SMRAMを変更できる脆弱性が存在すると
BIOSの再フラッシュにつながる
© 2013 The MITRE Corporation. All rights reserved.
| 48 |
Unified Extensible Firmware Interface
UEFIで問題は解決するか?
– しない。Intelのフラッシュ保護メカニズムは同一で、ベンダは
BIOS_CNTLレジスタによる保護しかしていないので、SMRAMへ
の侵入に対して脆弱のまま
– ベンダは独自のファームウェアルーチンを実装し続けている
– フラッシュチップに対してなんの保護もなされていないまま出荷
されているUEFIシステムも確認されている
ある意味においては、UEFIが攻撃者の味方になっているともいえる
© 2013 The MITRE Corporation. All rights reserved.
| 49 |
UEFIの解析は容易
UEFIでは標準として「ファームウェアボリューム1 」が定義されて
おり、関連するコードを容易にパースできる
1
EFIPWN: https://github.com/G33KatWork/EFIPWN
© 2013 The MITRE Corporation. All rights reserved.
| 50 |
懸念すべき傾向
膨大なコードがSMM内部で実装されている
この中に1つでも攻略可能なバグがあれば、ファームウェアの再フ
ラッシュバグにつながる
© 2013 The MITRE Corporation. All rights reserved.
| 51 |
修正されていない脆弱性
デモ
© 2013 The MITRE Corporation. All rights reserved.
| 52 |
結論
OEMは保護範囲レジスタを使用すべきにも関わらず、大半のベンダ
は使用していない
フラッシュの保護手段をBIOS_CNTL だけに依存すると、SMMのセ
キュリティがフラッシュチップのそれに直結してしまう
OEMのファームウェア更新ルーチンに脆弱性が存在すると、システ
ムファームウェアの再フラッシュが可能になる
こうした問題はUEFIとBIOSに共通する
いまだにフラッシュチップの保護がなされていないUEFIシステムが
出荷されている
© 2013 The MITRE Corporation. All rights reserved.
Copernicus 2: SENTER the Dragon!
プレビューバージョン
Xeno Kovah
John Butterworth
Corey Kallenberg
Sam Cornwell
© 2013 The MITRE Corporation. All rights reserved.
| 54 |
Copernicusに検知されない方法はあるか?
よく聞かれる質問
答えはイエス
Copernicusは、ベストエフォートベースかつ最小限の要件でデプロ
イが可能な悪意のあるファームウェアの検知ツール
– BIOSの状態を可視化したWindowsで最初のツール
– ファームウェアのチェックはほとんどなされていなく、悪意のあ
るファームウェアでは検出される可能性があまり想定されていな
いため、予想以上に検出できる
– 検出対策を怠っていた場合、このツールの存在そのものが攻撃者
の開発コストの増加につながる
ここからCopernicusの信頼性を向上させるのに必要だった事項を取
り上げる
© 2013 The MITRE Corporation. All rights reserved.
| 55 |
攻撃その0 –Copernicusに対するDoS
Copernicusの実行阻止
おそらく容易に検出可能だが、その目的は?
© 2013 The MITRE Corporation. All rights reserved.
| 56 |
攻撃その1 – Copernicusの出力を改ざん
OS内部からCopernicusのコードにフックを仕込む
OS内部から「DDefy」ルートキット方式のフックをファイルの書き
込みルーチンに仕込む (TODO: 新しい方式のDdefyがあった気もす
るが、メモリフォレンジックが対象のはず)
ハードディスクコントローラのファームウェアから [cite 3]
OS内部からネットワークパケットフィルタドライバで
NICのファームウェアから [cite 2]
© 2013 The MITRE Corporation. All rights reserved.
Attackその2 – 新たな攻撃手法
初公開
• SPIの読み込みおよび書き込み時にSMMに通知できる
• BIOSが攻撃者の支配下にあればSMMのセットアップも攻
撃者の支配下にある
• この手法ではBIOSに侵入した攻撃者がBIOSの整合性
チェックに対してSMMの中間者攻撃を仕掛けられる
• このSMM中間者攻撃を “Smite’em, the Stealthy”と命名
© 2013 The MITRE Corporation. All rights
reserved.
http://www.creativeuncut.com/g
allery-11/gw2-dragon-eye.html
| 58 |
Smite’em: Engineering a dragon
Smite’emはSPIフラッシュへの読み込みを中間者攻撃する実証コー
ド
– SPIフラッシュをダンプするアプリケーションから存在を隠ぺいで
きる
– アプリケーションにはCopernicus、Flashrom、Intel ChipSec、
McAfee DeepDefenderやRaytheon Pikewerks社のFirmware
Forensicsなどが含まれる
複数の実装方法
– 割り込みドリブン – FSMIEビット
– ポーリング – SCIP/FDONEビット
– VMXベース
| 59 |
SPI (Serial Peripheral Interface)フラッシュ
Intelはプログラム可能なSPI
フラッシュデバイスのイン
ターフェースを提供している
– システムBIOSもここに存
在する
– 他にも
Copernicusはこのインター
フェースを使用し、SPIフ
ラッシュをダンプする
Intel IO Controller Hub 10 Datasheet, page 31
| 60 |
SPI Flashのプログラミング
SPIホストインターフェースレジスタはRCRB (Root Complex Register
Block)にあるオフセット位置のメモリにマップされる
アプリケーションハードウェアもしくはソフトウェアシーケンシングを
選択できる
– 議論をわかりやすくするために、ハードウェアシーケンシングに関連
するオペレーションや細部についてのみ言及する
ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ
– このスライドのSPIレジスタについては次のURLを参照
– http://www.intel.com/content/www/us/en/io/io-controller-hub-10-familydatasheet.html
| 61 |
SPIプログラミングフラッシュアドレスレジスタ
SPI I/Oサイクルのアドレスを指定
– システムRAMのアドレスではなく、フラッシュのアドレス
– 有効な範囲は0からフラッシュチップのサイズ -1まで
| 62 |
SPIプログラミングデータレジスタ
SPIフラッシュから読み込んだデータ(64バイトまで)を保持する
読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定する
のにも使えるため)
Smite’emはこのデータをSMM内部から上書きする
…
| 63 |
SPIプログラミングコントロールレジスタ
SPI I/Oサイクルを実施
– アプリケーション(Copernicus)から使用する
I/Oサイクルで読み込む (もしくは書き込む)ビット数を定義
| 64 |
SPIプログラミングステータスレジスタ
SPI I/Oサイクルが実行中であるかを示す
ハードウェアが自動的にセット
| 65 |
SPIプログラミングステータスレジスタ 2
SPI I/Oサイクルが完了したかを示す
Smite’emはこのビットをポーリングし、 SPI I/Oサイクルが完了し
たのを確認して、FDATAレジスタのデータを改ざんする
| 66 |
Eye of the dragon - FSMIE – ハードウェアシー
ケンシング
このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアク
セスを検知できる
読み込みと書き込み後にFlash Cycle Doneビットは1にセットされ
る
© 2013 The MITRE Corporation. All rights reserved.
| 67 |
Eye of the dragon - FSMIE – ソフトウェアシー
ケンシング
ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に
使えるビット
© 2013 The MITRE Corporation. All rights reserved.
| 68 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
Smite'em
FADDR=00000…
FDATA0=00000…
Ring 0
FDONE=0
SCIP=0
FCYCLE=0
FGO=0
FSMIE=1
Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバ
イト数をセットする
© 2013 The MITRE Corporation. All rights reserved.
| 69 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
Smite'em
FADDR=0x1000
FDATA0=00000…
Ring 0
FDONE=0
SCIP=0
FCYCLE=0
FGO=0
FSMIE=1
Copernicusが読み込み開始を命令する
© 2013 The MITRE Corporation. All rights reserved.
| 70 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
Smite'em
FADDR=0x1000
FDATA0=00000…
Ring 0
FDONE=0
SCIP=1
FCYCLE=0
FGO=1
FSMIE=1
サイクルが進行中
© 2013 The MITRE Corporation. All rights reserved.
| 71 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
SMI
Smite'em
FADDR=0x1000
FDATA0=0x1badd00d
Ring 0
FDONE=1
SCIP=0
FCYCLE=0
FGO=0
FSMIE=1
サイクルが完了し、データが読み込み可能になった状態でFSMIEが
1の場合に、SMIが生成され てSmite‘emに通知が送られる
© 2013 The MITRE Corporation. All rights reserved.
| 72 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
Smite'em
FADDR=0x1000
FDATA0=0x1badd00d
Ring 0
FDONE=1
SCIP=0
FCYCLE=0
FGO=0
FSMIE=1
Smite‘emはその存在を示すデータを無害なデータに改ざんする
© 2013 The MITRE Corporation. All rights reserved.
| 73 |
Smite‘em実行中におけるフラッシュチップの読
み込み
SMM
Smite'em
FADDR=0x1000
FDATA0=0xf005ba11
Ring 0
FDONE=1
SCIP=0
FCYCLE=0
FGO=0
FSMIE=1
Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーショ
ン)は騙される
© 2013 The MITRE Corporation. All rights reserved.
| 74 |
知られていない危険性
ハードウェア・ソフトウェアシーケンシングのFSMIEビットが考慮
されていない場合(これまでのソフトウェアで考慮していたものはな
い)、BIOSの改ざんは見落とされてしまう
基本的な対策として、クエリを投げるツールが読み込む前にFSMIE
ビットを0にセットすればいいように思えるが
対抗策も複数
– 継続的にFSMIEを1にセットするカーネルエージェント
クリアしてもセットしなおされてしまうなら?
– SPI空間へのMMIOをVMXで横取りし、FSMIEをクリアしたと思わ
せる
攻撃者もVMXを使えば、FDATAを直接偽装できる
– 特定のセキュリティソフトウェアを標的にする
ツールが攻撃者を検出できるほど優秀なら、そのツールを出し抜くイ
ンセンティブが攻撃者にも働く
© 2013 The MITRE Corporation. All rights reserved.
| 75 |
別の方法もある
これまで紹介した方法は、可能ではあるもののやや強引なきらいが
ある
今回は時間の都合でできないが、別のプレゼンテーションで別の方
法を紹介する予定
ご期待ください
© 2013 The MITRE Corporation. All rights reserved.
| 76 | 2
Smite'em vs. Copernicus
| 77 |
Smite’emの対策は?
We could utilize our Checkmateによるタイミングベースの構成証明シ
ステム [19] をCopernicusカーネルドライバから実行し、SMI無効化や
FSMIE無効化を “改ざんされていない実行環境”チェックとしてセルフ
チェックに組み込んでしまうこともできた
しかし、より直接的なアプローチの機会があり、同時に他のトラステッ
ドコンピューティング技術でうまくできる方法もあった
Smite‘emはSMM内部にあるのだから、SMIを無効にすればよい
しかし、OSのドライバから無効にするだけでは不十分で、攻撃者は無
効にするコードを無効化できる
IntelのTXTの副作用でSMIが無効に
Intel Trusted Execution Technology (TXT)の仕組みを理解しよう
– TXTはマーケティング用語で、Intelのマニュアルでは “Safer Mode
Extensions” (SMX)と呼ばれる
© 2013 The MITRE Corporation. All rights reserved.
| 78 |
© 2013 The MITRE Corporation. All rights reserved.
| 79 |
Intel トラステッド・エグゼキューション・テク
ノロジー (TXT)
Dynamic Root of Trust for Measurement
起動後に信頼性を提供する手段のひとつ
– 侵入された可能性のあるシステムでTXTを起動すると、あらかじ
め設定され信頼が置ける状態を保障できる
© 2013 The MITRE Corporation. All rights reserved.
From http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20-%20slides.pdf| 80 |
© 2013 The MITRE Corporation. All rights reserved.
| 81 |
対象はTXTのサブセットのみ
GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティ
チェックにだけ使う必要がある
MLEの開始および停止させるSENTERとSEXITが主な対象
SMCTRLと WAKEUPは使わない
– SMMを対象のSMMコードを停止させるのがポイント
© 2013 The MITRE Corporation. All rights reserved.
| 82 |
Invisible Things LabのTXTに対する攻撃
「彼らによれば、いくつもの攻撃方法が存在するのでは?」
「つまりTXTはまったく信頼できないということでは?」
答えはNo
TXTは攻撃手段があることを意識した上で使わなければならないと
いうことにすぎない
レビューの時間がないので、別のプレゼンテーションで
© 2013 The MITRE Corporation. All rights reserved.
| 83 |
Lets build this thing!
© 2013 The MITRE Corporation. All rights reserved.
| 84 |
Copernicus 1 アーキテクチャ
RAM/物理アドレス空間
BIOS エイリアス (high mem)
CPU
キャッシュ
High
SMRAM
PCH
SPIフラッシュチップ
Copernicus.sys
UEFI BIOSファームウェア
Low
© 2013 The MITRE Corporation. All rights reserved.
| 85 |
Copernicus 1 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
PCH
SPIフラッシュチップ
Copernicus.sys
UEFI BIOSファームウェア
Low
© 2013 The MITRE Corporation. All rights reserved.
| 86 |
Copernicus 1 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
PCH
SPIフラッシュチップ
Copernicus.sys
UEFI BIOSファームウェア
Low
© 2013 The MITRE Corporation. All rights reserved.
| 87 |
Smite’em攻撃
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
PCH
SPIフラッシュチップ
Copernicus.sys
UEFI BIOSファームウェア
Low
© 2013 The MITRE Corporation. All rights reserved.
| 88 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
TXTヒープ
PCH
SINITエリア
Measured Launch Environment (MLE)
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 89 |
全体の動き
Copernicus2.sysの最初のアクション:
– MLEの実体化
MLEのアクション:
– 設定情報の読み込み、テキストをバッファに格納、バッファを
PCR18に拡張
– BIOSを1MBずつ読み込み、バッファに格納、バッファをPCR18に拡
張
– SEXIT
復帰後のCopernicus2.sysのアクション:
– PCR 17と18に対して、TPMのQuoteコマンドを実行し、ディスクに
格納
– 同様に設定とBIOSを読み込み、ディスクに格納
© 2013 The MITRE Corporation. All rights reserved.
| 90 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
TXTヒープ
PCH
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured Launch Environment (MLE)
SPI
LPC
フラッシュチップ
TPM
PCR0 = 0xfa7e…
UEFI BIOS
ファームウェア
…
Copernicus2.sys
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 91 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
TXTヒープ
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
ディスクからコピーしたSINIT
SINITエリア
ACM
Construct MLEとページング構造
Measured Launch Environment (MLE)
体
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 92 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
Setup TXTヒープ構造体
ヒープ
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 93 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
ヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
SENTER!
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 94 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 95 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 96 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
PCH
S
t
o
SPI
LPC
r
e TPM
フラッシュチップ
PCR0 = 0xfa7e…
UEFI BIOS
ファームウェア
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
Copernicus2.sys
…
PCR17 = 0x0000
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 97 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
PCH
S
t
o
SPI
LPC
r
e TPM
フラッシュチップ
PCR0 = 0xfa7e…
UEFI BIOS
ファームウェア
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 98 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
PCH
S
t
o
SPI
LPC
r
TPM
フラッシュチップ
e
PCR0 = 0xfa7e…
UEFI BIOS
ファームウェア
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0x0000
© 2013 The MITRE Corporation. All rights reserved.
Low
| 99 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xac02
© 2013 The MITRE Corporation. All rights reserved.
Low
| 100 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xac02
© 2013 The MITRE Corporation. All rights reserved.
Low
| 101 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xac02
© 2013 The MITRE Corporation. All rights reserved.
Low
| 102 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xf005
© 2013 The MITRE Corporation. All rights reserved.
Low
| 103 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xf005
© 2013 The MITRE Corporation. All rights reserved.
Low
| 104 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xf005
© 2013 The MITRE Corporation. All rights reserved.
Low
| 105 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xba11
© 2013 The MITRE Corporation. All rights reserved.
Low
| 106 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
SEXIT
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xba11
© 2013 The MITRE Corporation. All rights reserved.
Low
| 107 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
Copernicusにレジューム
…
PCR17 = 0x136b
PCR18 = 0xba11
© 2013 The MITRE Corporation. All rights reserved.
Low
| 108 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xba11
© 2013 The MITRE Corporation. All rights reserved.
Low
| 109 |
Copernicus 2 アーキテクチャ
RAM/物理アドレス空間
BIOSエイリアス (high mem)
CPU
キャッシュ
ディスクからコピー
したSINIT ACM
High
SMRAM
TXTヒープ
TXTヒープ構造体
ディスクからコピーしたSINIT
SINITエリア
ACM
Measured
Launch Environment (MLE)
MLEとページング構造体
PCH
SPI
フラッシュチップ
UEFI BIOS
ファームウェア
LPC
TPM
PCR0 = 0xfa7e…
Copernicus2.sys
…
PCR17 = 0x136b
PCR18 = 0xba11
© 2013 The MITRE Corporation. All rights reserved.
Low
| 110 |
Done!
MLEの内部からデータをディスクに実際に書き込む必要はない。
データを収集し、TPMのPCRにハッシュを保存すればよい
– 余分にSMIが無効化されたMLE内部にいなくてもよいので、複数
のOSのサポートやパフォーマンスという点でも優れている
Copernicus 2を「信頼のおける」システムとするために必要になっ
たステップや努力…これがCopernicus 1を「ベストエフォート」シ
ステムとしてリリースすることにしたそもそもの理由
トラステッドコンピューティングは難しい!
– 言いかえると、こうしたレベルまで実装しなければ、結果はまっ
たく無意味に
「他のTXTの評価者も一様に『これは複雑だ」とコメントした。彼
らに「何を取り除くべきか」と質問したが、その解答は『取り除け
るものはないと思う』というものばかりだった」
– Intel社のDavid Grawrockによる “Dynamics of a Trusted
Computing System: A Building Blocks Approach”の11章より
© 2013 The MITRE Corporation. All rights reserved.
| 111 |
計測結果の確認
TPM PCR 17と18のQuoteコマンドから署名をバリデート
PCR18を確認
SHA1( … SHA1(SHA1(SHA1(SHA1(020 | MLE) | config.txt) |
BIOSMB[0]) | BIOSMB[1]) … BIOSMB[N])
– BIOSMB[0]は1MBチャンクの0番目、BIOSMB[1]が1番目、
BIOSMB[N]まで
“PCR 17”セクション(Trusted Execution Technology: Software
Development Guide 1.9.1.1 2013年7月付)にあるフィールドと値か
らPCR17が取得されているのを確認
(注意: 確認作業は信頼性の確認が取れているプラットフォーム、確
認作業以外を目的にしないサーバなどで実施すべきで、侵入された
可能性のあるシステムで信頼性の確認をしてはいけない)
© 2013 The MITRE Corporation. All rights reserved.
| 112 |
すべてがあっていれば
本物の計測結果を手にしたということ
次は悪意のあるコードが含まれているかどうかの判定が必要になる
John ButterworthがBIOS解析講座を実施予定
– それまでに必要な課題をこなすこと (ページング、ポートIO、ス
タティックRE、IDAなど)
– 詳しくはhttp://OpenSecurityTraining.info
© 2013 The MITRE Corporation. All rights reserved.
| 113 |
結論
攻撃者にSMMを乗っ取られると、SPIの読み取りおよび書き込みに
は、中間者攻撃の可能性が存在する
その攻撃を実際に実装した
– Smite’em the Stealthy
偉大なるヒーローCopernicusは怪物の体内に潜入し、TXTの力に
よって討伐して
Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼
できない
– ご購入の際にはCopernicus 2対応済みの製品をお勧めします
– ファームウェアの整合性検査をしている会社にはライセンスを提
供
TXTがサポートされていない、もしくはベンダの実装がダメな場合
は、残念ながら脆弱性は解消できない
– ドラゴンSmite’em’の子供たちはローエンド製品にも生息している
© 2013 The MITRE Corporation. All rights reserved.
| 114 |
FAQ, Questions?
Copernicus 1と2のソースコードは?
– Xeno – [email protected]までご連絡を
– 膨大なホスト上でのCopernicusの実行結果の提供、もしくはライ
センス料が必要
TXTがサポートされていない、もしくは有効にできない場合に、
Copernicus 1を実行する意義はあるか?
– ある。おそらく攻撃者はCopernicus 1の存在を予想していないし、
Smite’em機能を実装していないケースを見つけられる可能性はあ
る
ベンダXの計測結果は信頼できるか?
– おそらくできない。いくつかのベンダに技術提供の話をしてみた
が、まとまってはいない
© 2013 The MITRE Corporation. All rights reserved.
| 115 |
References
[1] Attacking Intel BIOS – Alexander Tereshkin & Rafal Wojtczuk – Jul. 2009
http://invisiblethingslab.com/resources/bh09usa/Attacking%20Intel%20BIOS.pdf
[2] TPM PC Client Specification - Feb. 2013
http://www.trustedcomputinggroup.org/developers/pc_client/specifications/
[3] Evil Maid Just Got Angrier: Why Full-Disk Encryption With TPM is Insecure
on Many Systems – Yuriy Bulygin – Mar. 2013
http://cansecwest.com/slides/2013/Evil%20Maid%20Just%20Got%20Angrier.pdf
[4] A Tale of One Software Bypass of Windows 8 Secure Boot – Yuriy Bulygin –
Jul. 2013 http://blackhat.com/us-13/briefings.html#Bulygin
[5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna
Rutkowska – Feb. 2009
http://invisiblethingslab.com/resources/bh09dc/Attacking%20Intel%20TXT%20%20paper.pdf
[6] Another Way to Circumvent Intel® Trusted Execution Technology - Rafal
Wojtczuk, Joanna Rutkowska, and Alexander Tereshkin – Dec. 2009
http://invisiblethingslab.com/resources/misc09/Another%20TXT%20Attack.pdf
[7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal
Wojtczuk and Joanna Rutkowska – Dec. 2011
http://www.invisiblethingslab.com/resources/2011/Attacking_Intel_TXT_via_SINI
T_hijacking.pdf
[7] Meet 'Rakshasa,' The Malware Infection Designed To Be Undetectable And
Incurable - http://www.forbes.com/sites/andygreenberg/2012/07/26/meetrakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable/
| 116 |
References 2
[8] Implementing and Detecting an ACPI BIOS Rootkit – Heasman, Feb.
2006 http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06Heasman.pdf
[9] Implementing and Detecting a PCI Rookit – Heasman, Feb. 2007
http://www.blackhat.com/presentations/bh-dc-07/Heasman/Paper/bhdc-07-Heasman-WP.pdf
[10] Using CPU System Management Mode to Circumvent Operating
System Security Functions - Duflot et al., Mar. 2006
http://www.ssi.gouv.fr/archive/fr/sciences/fichiers/lti/cansecwest2006duflot-paper.pdf
[11] Getting into the SMRAM:SMM Reloaded – Duflot et. Al, Mar. 2009
http://cansecwest.com/csw09/csw09-duflot.pdf
[12] Attacking SMM Memory via Intel® CPU Cache Poisoning –
Wojtczuk & Rutkowska, Mar. 2009
http://invisiblethingslab.com/resources/misc09/smm_cache_fun.pdf
[13] Defeating Signed BIOS Enforcement – Kallenberg et al., Sept. 2013
http://conference.hitb.org/hitbsecconf2013kul/materials/D1T1%20%20Kallenberg,%20Kovah,%20Butterworth%20%20Defeating%20Signed%20BIOS%20Enforcement.pdf
| 117 |
References 3
[14] Mebromi: The first BIOS rootkit in the wild – Giuliani, Sept. 2011
http://www.webroot.com/blog/2011/09/13/mebromi-the-first-biosrootkit-in-the-wild/
[15] Persistent BIOS Infection – Sacco & Ortega, Mar. 2009
http://cansecwest.com/csw09/csw09-sacco-ortega.pdf
[16] Deactivate the Rootkit – Ortega & Sacco, Jul. 2009
http://www.blackhat.com/presentations/bh-usa09/ORTEGA/BHUSA09-Ortega-DeactivateRootkit-PAPER.pdf
[17] Sticky Fingers & KBC Custom Shop – Gazet, Jun. 2011
http://esec-lab.sogeti.com/dotclear/public/publications/11-reconstickyfingers_slides.pdf
[18] BIOS Chronomancy: Fixing the Core Root of Trust for
Measurement – Butterworth et al., May 2013
http://www.nosuchcon.org/talks/D2_01_Butterworth_BIOS_Chrono
mancy.pdf
[19] New Results for Timing-based Attestation – Kovah et al., May
2012 http://www.ieee-security.org/TC/SP2012/papers/4681a239.pdf