xeno defeatingsignedbios-pacsec 2013 v4 ja · | 6 | follow along...

117
© 2013 The MITRE Corporation. All rights reserved. Corey Kallenberg John Butterworth Sam Cornwell Xeno Kovah 署名されたBIOS強制の無効化 (ボーナストラックとして最新の研究結果のプレビューも)

Upload: vuongxuyen

Post on 29-Aug-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

copy 2013 The MITRE Corporation All rights reserved

Corey Kallenberg John Butterworth Sam Cornwell Xeno Kovah

署名されたBIOS強制の無効化 (ボーナストラックとして最新の研究結果のプレビューも)

| 2 |

BIOSルートキット

 プラットフォームで最初に実行されるので非常に強力  OSの再インストールでも消去されない  あまり注目されない  X86プラットフォームでもっとも強力な「システム管理モード」を利用できる [5][10][11][12]

 しかしBIOSルートキットはまだ少ない ndash OSのルートキットと比較して移植性が低く実装も困難 ndash 今後OSの堅牢になるにつれて増加が予想される

copy 2013 The MITRE Corporation All rights reserved

| 3 |

最近のBIOSのセキュリティ状況

  2012 ldquoHardware Backdooring Is Practicalrdquo by J Brossard [7] ndash  CoreBootなどのオープンソースファームウェアによりBIOSルートキットの作成は以前よりも容易に

  2013 ldquoEvil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure on Many Systemsrdquo Yuriy Bulygin [3] ndash  不適切な計測実装によってTPM内の計測結果を改ざんし攻撃者はTPMサポートが有効なBitLockerを回避できる

  2013 ldquoA Tale Of One Software Bypass Of Windows 8 Secure Bootrdquo Bulygin et al [4] ndash  フラッシュチップがロックされていなければSecure Bootを回避できる ndash  重要なEFIの非揮発性変数が書き込み可能であればSecure Bootを回避できる

  2013 ldquoBIOS Chronomancyrdquo Butterworth et al [18] ndash  適切に実装されたBIOSでも攻撃者は計測コードの信頼のルートを改ざんできる ndash  攻撃者はBIOSの再フラッシュにも耐えられる ndash  「タイミングベースBIOS」はBIOS内の検出コードでBIOS内の攻撃者を検出できる

  そして今回のプレゼンテーション

copy 2013 The MITRE Corporation All rights reserved

| 4 |

BIOSの保護

 これまでの結果は攻撃者がSPIフラッシュチップのプラットフォームファームウェア(BIOSもしくはUEFI)に手が出せることを前提にしていた

 ファームウェアの更新に署名を強制することで悪意のあるフラッシュチップの書き込みから保護できる

 最近の多くのシステムでは署名済みファームウェアの更新をサポートもしくは義務付けている1

1 このあと詳しくhellip

copy 2013 The MITRE Corporation All rights reserved

| 5 |

実装方法

  Intelがフラッシュチップを改ざんから保護するためのメカニズムを提供している ndash 詳細はそれぞれのハードウェアのCPU(G)MCHICHPCHのドキュメントに

ndash こうした保護手段は比較的変更されていない  保護メカニズムを使用して署名済みBIOSを強制させるのはそれぞれのOEMの責任 ndash これには非常に複雑な保護メカニズムを適切に設定することも含まれる

ndash またバグのない更新ルーチンを実装することも含まれる

copy 2013 The MITRE Corporation All rights reserved

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 2 |

BIOSルートキット

 プラットフォームで最初に実行されるので非常に強力  OSの再インストールでも消去されない  あまり注目されない  X86プラットフォームでもっとも強力な「システム管理モード」を利用できる [5][10][11][12]

 しかしBIOSルートキットはまだ少ない ndash OSのルートキットと比較して移植性が低く実装も困難 ndash 今後OSの堅牢になるにつれて増加が予想される

copy 2013 The MITRE Corporation All rights reserved

| 3 |

最近のBIOSのセキュリティ状況

  2012 ldquoHardware Backdooring Is Practicalrdquo by J Brossard [7] ndash  CoreBootなどのオープンソースファームウェアによりBIOSルートキットの作成は以前よりも容易に

  2013 ldquoEvil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure on Many Systemsrdquo Yuriy Bulygin [3] ndash  不適切な計測実装によってTPM内の計測結果を改ざんし攻撃者はTPMサポートが有効なBitLockerを回避できる

  2013 ldquoA Tale Of One Software Bypass Of Windows 8 Secure Bootrdquo Bulygin et al [4] ndash  フラッシュチップがロックされていなければSecure Bootを回避できる ndash  重要なEFIの非揮発性変数が書き込み可能であればSecure Bootを回避できる

  2013 ldquoBIOS Chronomancyrdquo Butterworth et al [18] ndash  適切に実装されたBIOSでも攻撃者は計測コードの信頼のルートを改ざんできる ndash  攻撃者はBIOSの再フラッシュにも耐えられる ndash  「タイミングベースBIOS」はBIOS内の検出コードでBIOS内の攻撃者を検出できる

  そして今回のプレゼンテーション

copy 2013 The MITRE Corporation All rights reserved

| 4 |

BIOSの保護

 これまでの結果は攻撃者がSPIフラッシュチップのプラットフォームファームウェア(BIOSもしくはUEFI)に手が出せることを前提にしていた

 ファームウェアの更新に署名を強制することで悪意のあるフラッシュチップの書き込みから保護できる

 最近の多くのシステムでは署名済みファームウェアの更新をサポートもしくは義務付けている1

1 このあと詳しくhellip

copy 2013 The MITRE Corporation All rights reserved

| 5 |

実装方法

  Intelがフラッシュチップを改ざんから保護するためのメカニズムを提供している ndash 詳細はそれぞれのハードウェアのCPU(G)MCHICHPCHのドキュメントに

ndash こうした保護手段は比較的変更されていない  保護メカニズムを使用して署名済みBIOSを強制させるのはそれぞれのOEMの責任 ndash これには非常に複雑な保護メカニズムを適切に設定することも含まれる

ndash またバグのない更新ルーチンを実装することも含まれる

copy 2013 The MITRE Corporation All rights reserved

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 3 |

最近のBIOSのセキュリティ状況

  2012 ldquoHardware Backdooring Is Practicalrdquo by J Brossard [7] ndash  CoreBootなどのオープンソースファームウェアによりBIOSルートキットの作成は以前よりも容易に

  2013 ldquoEvil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure on Many Systemsrdquo Yuriy Bulygin [3] ndash  不適切な計測実装によってTPM内の計測結果を改ざんし攻撃者はTPMサポートが有効なBitLockerを回避できる

  2013 ldquoA Tale Of One Software Bypass Of Windows 8 Secure Bootrdquo Bulygin et al [4] ndash  フラッシュチップがロックされていなければSecure Bootを回避できる ndash  重要なEFIの非揮発性変数が書き込み可能であればSecure Bootを回避できる

  2013 ldquoBIOS Chronomancyrdquo Butterworth et al [18] ndash  適切に実装されたBIOSでも攻撃者は計測コードの信頼のルートを改ざんできる ndash  攻撃者はBIOSの再フラッシュにも耐えられる ndash  「タイミングベースBIOS」はBIOS内の検出コードでBIOS内の攻撃者を検出できる

  そして今回のプレゼンテーション

copy 2013 The MITRE Corporation All rights reserved

| 4 |

BIOSの保護

 これまでの結果は攻撃者がSPIフラッシュチップのプラットフォームファームウェア(BIOSもしくはUEFI)に手が出せることを前提にしていた

 ファームウェアの更新に署名を強制することで悪意のあるフラッシュチップの書き込みから保護できる

 最近の多くのシステムでは署名済みファームウェアの更新をサポートもしくは義務付けている1

1 このあと詳しくhellip

copy 2013 The MITRE Corporation All rights reserved

| 5 |

実装方法

  Intelがフラッシュチップを改ざんから保護するためのメカニズムを提供している ndash 詳細はそれぞれのハードウェアのCPU(G)MCHICHPCHのドキュメントに

ndash こうした保護手段は比較的変更されていない  保護メカニズムを使用して署名済みBIOSを強制させるのはそれぞれのOEMの責任 ndash これには非常に複雑な保護メカニズムを適切に設定することも含まれる

ndash またバグのない更新ルーチンを実装することも含まれる

copy 2013 The MITRE Corporation All rights reserved

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 4 |

BIOSの保護

 これまでの結果は攻撃者がSPIフラッシュチップのプラットフォームファームウェア(BIOSもしくはUEFI)に手が出せることを前提にしていた

 ファームウェアの更新に署名を強制することで悪意のあるフラッシュチップの書き込みから保護できる

 最近の多くのシステムでは署名済みファームウェアの更新をサポートもしくは義務付けている1

1 このあと詳しくhellip

copy 2013 The MITRE Corporation All rights reserved

| 5 |

実装方法

  Intelがフラッシュチップを改ざんから保護するためのメカニズムを提供している ndash 詳細はそれぞれのハードウェアのCPU(G)MCHICHPCHのドキュメントに

ndash こうした保護手段は比較的変更されていない  保護メカニズムを使用して署名済みBIOSを強制させるのはそれぞれのOEMの責任 ndash これには非常に複雑な保護メカニズムを適切に設定することも含まれる

ndash またバグのない更新ルーチンを実装することも含まれる

copy 2013 The MITRE Corporation All rights reserved

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 5 |

実装方法

  Intelがフラッシュチップを改ざんから保護するためのメカニズムを提供している ndash 詳細はそれぞれのハードウェアのCPU(G)MCHICHPCHのドキュメントに

ndash こうした保護手段は比較的変更されていない  保護メカニズムを使用して署名済みBIOSを強制させるのはそれぞれのOEMの責任 ndash これには非常に複雑な保護メカニズムを適切に設定することも含まれる

ndash またバグのない更新ルーチンを実装することも含まれる

copy 2013 The MITRE Corporation All rights reserved

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 6 |

Follow Along

 フラッシュ内の改ざん保護設定を読みだすには筆者および筆者の同僚によるツールがある ndash  httpwwwmitreorgcapabilitiescybersecurityoverview

cybersecurity-blogcopernicus-question-your-assumptions-about ndash もしくは googleで ldquoMITRE Copernicusrdquoを検索

copy 2013 The MITRE Corporation All rights reserved

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 7 |

BIOS_CNTL

 上記はICHのBIOS_CNTL レジスタの一部  BIOS_CNTLBIOSWEはフラッシュチップの書き込み許可

BIOS_CNTLBLEはOEMがBIOSWEを保護しSMMルーチンを実装する手段を提供

from httpwwwintelcomcontentwwwusenchipsets6-chipset-c200-chipset-datasheethtml

copy 2013 The MITRE Corporation All rights reserved

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 8 |

SMM BIOSWEによる保護 (1 of 2)

 攻撃者がBIOSWEを1に設定しBIOSを書き換えようとする

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 9 |

SMM BIOSWEによる保護 (2 of 2)

 BLEが1の場合BIOSWEへの書き込みによりCPUはシステムマネージメント割り込み(SMI)を発生させる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

SMI

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 10 |

SMM BIOSWEによる保護 (2 of 2)

 カーネルコードに復帰する前にSMMコードはただちにBIOSWEを0に戻す

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 1

BLE = 1

SMMコード

copy 2013 The MITRE Corporation All rights reserved

RSM

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 11 |

SMM BIOSWEによる保護 (2 of 2)

 その結果非SMMコードが実行中の間BIOSWEは常に0になる

Ring 0カーネルコード

BIOS_CNTL BIOSWE = 0

BLE = 1

SMMコード

copy 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の値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 12 |

BIOSWEによる保護 (1 of 2)

  set_biosweはBIOS_CNTLレジスタのBIOSWEビットをセットするシンプルなプログラム

 BIOS_CNTL = 0xBなら BIOSWEをセット  BIOS_CNTL = 0xAなら BIOSWEはセットされていない  BIOSWE=1にしようとしたがSMMがBIOSWEの値を保護しているため失敗していることに注目

copy 2013 The MITRE Corporation All rights reserved

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 13 |

BIOSWEによる保護 (2 of 2)

 BIOS_CNTL=0xA (BIOSWE=0)で書き込みが禁止されているので1オープンソースのFlashromツールでBIOSチップへの書き込みをしても失敗する

1 Command flashrom ndashp internallaptop_I_want_a_brickich_spi_mode=swseq ndashw biosbin

copy 2013 The MITRE Corporation All rights reserved

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 14 |

Protected Range SPI Flash Protections

  保護範囲レジスタでもフラッシュチップへの書き込み保護が可能

copy 2013 The MITRE Corporation All rights reserved

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 15 |

HSFSFLOCKDN

 HSFSFLOCKDNがセットされるとProtected Range レジスタに対する変更はできない

copy 2013 The MITRE Corporation All rights reserved

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 16 |

Intelによる保護のまとめ

 Protected Rangeと BIOS_CNTL レジスタでプラットフォームファームウェアを含むSPIフラッシュチップの保護が可能

 プラットフォームがリセットされるとこうした保護もリセットされ電源投入時にフラットフォームファームウェアによって適切に設定しなければならない

copy 2013 The MITRE Corporation All rights reserved

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 17 |

OEM BIOS更新ルーチン

 DellのBIOSをケーススタディにIntelのフラッシュ保護メカニズムを使った署名済みBIOSの強制をOEMがどのように実装しているかを取り上げる

 対象はDell Latitude E6400 BIOSのコードだが問題のBIOS更新ルーチンは他の20以上のDell製品で使われている

copy 2013 The MITRE Corporation All rights reserved

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 18 |

Dell E6400 BIOSの更新

1  ファームウェア更新バイナリ (ldquoHDRrdquo)がカーネルメモリにコピーされる

ndash  デフォルトではHDRファイルをldquorbuパケットrdquo にパケット化する

ndash  HDRにはBIOS更新以外のものも含まれる (キーボードコントローラマネージメントエンジンなど)

2  CMOSのバイト0x78が反転する 3  システムがリブートする 4  CMOSのビットが反転しているのでBIOSがSMIを生成しSMM

BIOS更新ルーチンを実行する 5  BIOS更新ルーチンの実行後はIntelのフラッシュ保護メカニズムがセットされ他のフラッシュチップへの書き込みは禁止される

copy 2013 The MITRE Corporation All rights reserved

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 19 |

BIOS更新ルーチン (1 of 2)

$RPKhellip Packet=1 size=0x400

Copyright 2011 Dell Inc A29

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF hellip

$RPKhellip Packet=2 size=0x1000

00 00 FF FF FF FF FFhellip

OSカーネル ドライバー

bull  OSが新BIOSイメージをアドレス空間ごとにパケット化する各パケットには33バイトのrbu_packetヘッダが含まれヘッダにはパケットのBIOSイメージの情報の内容および順序が含まれる

bull  CMOSのあるビットが反転し再起動したBIOSに更新があることを伝える

copy 2013 The MITRE Corporation All rights reserved

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 20 |

BIOS更新ルーチン (2 of 2)

$RPKhellip Packet=N size=0x100

EB 39 00 00 00 FF FF FF FF FF hellip

$RPKhellip Packet=N‐1 size=0x1000

00 00 FF FF FF FF FFhellip bull  リブートするとシステム管理モードのアップデートルーチンがそれぞれのrbu packetsをチェックし完全なBIOSイメージを再構築する

bull  SMM は再構築されたBIOSイメージがDellによって署名されていることを確認しフラッシュに書き込む

システム管理モード RAM SMM Update RouKne

Copyright 2011 Dell Inc A29 FF FF FF FF FF FF FF FF FF FF

hellip hellip

EB 39 00 00 FF FF FF FF FF FF

copy 2013 The MITRE Corporation All rights reserved

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 21 |

攻撃者の目標と計画

 署名済みBIOSが強制されている環境下でBIOSを任意のイメージで再フラッシュする

 手段 BIOS更新情報 (RBUパケット)のパース処理でメモリ破壊脆弱性を探す存在すればSMMの制御を奪いBIOSチップの再フラッシュが可能になる

 メモリ破壊脆弱性はBIOS更新イメージのチェック前に存在しなければならない

 SMMはBIOS更新イメージのメタデータが含まれる33バイトのrb_packetヘッダをパースするこのパース処理は署名チェックの前に実行される

copy 2013 The MITRE Corporation All rights reserved

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 22 |

攻撃面

httplinuxdellcomlibsmbiosmainRbuLowLevel_8h-sourcehtml copy 2013 The MITRE Corporation All rights reserved

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 23 |

パケットのパース

 SMMは最初にページごとにそろえられたASCII署名によってRBUパケットの位置を特定する

 位置を特定するとRBUパケットはSMMのデータエリアに保管されその後の計算に使われる

copy 2013 The MITRE Corporation All rights reserved

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 24 |

不思議なGEOR

 SMMがBIOSイメージを再構成する際にBIOSイメージが再構成されるメモリ空間に初期文字列ldquoGEORrdquoを書き込む

copy 2013 The MITRE Corporation All rights reserved

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 25 |

RBUパケットのコピー

 最終的にRBUパケットからBIOSイメージがメモリの再構築エリアにコピーされる

 インラインmemcpyのサイズパラメータ(ecx)は攻撃者によるデータ(g_pktSizeMinusHdrSize)であることに注目

copy 2013 The MITRE Corporation All rights reserved

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 26 |

RBUパケットパースの脆弱性

 コピー先とコピー元はrbu_packetから得た攻撃者によるデータ  攻略可能なバッファオーバーフロー

copy 2013 The MITRE Corporation All rights reserved

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 27 |

回避策の欠如

 システム管理モードには最近のアプリケーションに見られるような攻略回避策がまったくない

 ASLRNXスタックカナリアなど  つまりrbu_packetのコピー関数の戻りアドレスなど改ざんによってなんでも標的にできる

copy 2013 The MITRE Corporation All rights reserved

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 28 |

脆弱性の攻略

 RBUパケットのデータにはいくつもの制限がありこのバッファオーバーフローの攻略には工夫が必要

copy 2013 The MITRE Corporation All rights reserved

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 29 |

制限の概要

 コピー先は文字列ldquoGEORrdquoで初期化されているエリアでなければならない

 コピー先は戻りアドレスよりも下位のメモリでなければならない  書き換えすぎるとインラインコピーで失敗して戻れなくなる  コピー元の位置は攻撃者がコントロールできるアドレス空間のデータが戻りアドレスを上書きするようになっていなければならない

 他にも

copy 2013 The MITRE Corporation All rights reserved

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 30 |

More Problems

 コピー元コピー先コピーサイズはいずれも同じrbu_packetのメンバーから計算される

 いずれかを変更すると他の値も変更される  前述の条件すべてを満たさねばならない  この脆弱性の攻略は方法は制約充足問題としてモデル化できる

copy 2013 The MITRE Corporation All rights reserved

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 31 |

制約系

 通常は初期化ルーチンが適切なコピー先をldquoGEORrdquo文字列で初期化する

 初期化ルーチンによる大量のmemsetとGEORの書き込みが問題になるのでここではrbu_packettotPktsを1にすることでこの初期化ルーチンをスキップする (上記のコードからわかるようにtotalDataSizeは0になる)

 つまり本来あるべきldquoGEORrdquo文字列がアドレス空間に存在しなくなるので copy_dest = ldquoGEORrdquoという制約を満たすようにldquoGEORrdquoを何らかの方法で押し込まなければならない copy 2013 The MITRE Corporation All rights reserved

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 32 |

偽のGEOR

 脆弱なmemcpyが実行されるのはコピー先にGEOR文字列が含まれる場合

 ここではメモリマップドIOを実行するWindowsのカーネルドライバを使い上書きしたい戻りアドレスの範囲にcopy_destがなるよう可能な限り上位のメモリにGEOR文字列を書き込む

 BIOS更新プロセスと同様にソフトリブートではRAMの内容が変わらないという点を利用していて書き込んだGEOR文字列もアドレス空間に残る

copy 2013 The MITRE Corporation All rights reserved

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 33 |

RBUパケットの解

 こうした制約を考慮しサニティチェックをパスしつつ適切な戻りアドレスで上書きできるrbu_packet設定を総当たりで探し出す

copy 2013 The MITRE Corporation All rights reserved

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 34 |

悪意のあるBIOS更新

$RPK Packet=0x83f9 size=0xfffe Shellcode Shellcode

hellip Shellcode

bull  異常に大きなパケットサイズとパケットのシーケンス番号によりパケットの再構成エリアがシステム管理RAMにオーバーフローする

bull  これによりシステム管理RAM内の戻りアドレスを上書きしBIOS更新ルーチンのコンテキストのままEIPのコントロールを奪える

システム管理モード RAM SMM更新ルーチン

パケット再構成空間 Shellcode Shellcode Shellcode

hellip

copy 2013 The MITRE Corporation All rights reserved

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 35 |

PoCのデモ映像 httpyoutubeV_ea21CrOPM

copy 2013 The MITRE Corporation All rights reserved

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 36 |

脆弱性の結論

 この脆弱性は署名済みBIOSが強制されているにも関わらず攻撃者がBIOS更新プロセスを乗っ取りBIOSを任意のイメージで再フラッシュできる

 CVE-2013-3582  他の更新ルーチンにも同様な脆弱性が存在する可能性

ndash 署名済みBIOS更新の強制が考慮されていない時期に開発された可能性が高い

ndash  BIOSイメージのプロプライエタリな性格上更新用のコードを特定しリバースエンジニアするのは困難でありコードのピアレビューはほとんど実施されていない

  DellのBIOS更新ルーチンの特定および攻略は非常に困難だったがもしかすると簡単な方法があったかもしれない

copy 2013 The MITRE Corporation All rights reserved

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 37 |

Intelの保護メカニズムの攻撃

 BIOS_CNTLと保護範囲FLOCKDNレジスタは基本的にフラッシュへの書き込みに対する保護手段である

 興味深いことにほとんどのOEMがフラッシュの保護手段にはBIOS_CNTL レジスタしか使っていないようだ

 システム管理モードRAMのセキュリティがフラッシュチップのセキュリティに危険な形で関係することになる

copy 2013 The MITRE Corporation All rights reserved

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 38 |

過去のバグふたたび

  2009年に Rafal WojtczukとLoic Duflotが Intelアーキテクチャのキャッシュ機能を悪用しシステム管理モード (SMM)1 2のコンテキストで任意のコードを実行できる脆弱性を発見

 このキャッシュ毒入れ攻撃はシステム管理モードRAM (SMRAM)に対する一時的な攻撃方法と考えられておりSMRAMに書き込まれた攻撃者のコードはプラットフォームリセットで消去されるとされていた

 しかしシステムによってはキャッシュ毒入れ攻撃で任意のBIOSに書き換えが可能に ndash  BIOSはSMRAMの管理を担当するため攻撃者にSMM内への恒久的な侵入を許すことにつながる

copy 2013 The MITRE Corporation All rights reserved

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 39 |

キャッシュ毒入れ攻撃の概要 (1 of 2)

 CPUがSMMのコンテキストで実行中の場合にのみSMRAMは書き込みおよび読み込みが可能でSMM以外のコンテキストでのSMRAMへのアクセスは メモリコントローラハブ (MCH)がブロックする

 SMRAMのデフォルトキャッシュポリシーはキャッシュ不可で読み書きは直接RAMに行われキャッシュは使われない

copy 2013 The MITRE Corporation All rights reserved

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 40 |

キャッシュ毒入れ攻撃の概要 (2 of 2)

 しかしメモリタイプ範囲レジスタ(MTRR)でSMRAMをldquoWrite Backrdquoキャッシュに設定できる

 SMRAMに紐づけられたメモリ範囲に悪意のあるコードを書き込むことで攻撃者はSMRAMに対応するキャッシュエントリに毒入れできる

 この変更はSMRAMに反映されないがSMRAMのメモリ位置のキャッシュラインに反映される

 次にCPUがSMMになると実際のSMRAMの内容ではなくSMRAMのキャッシュエントリにあるSMMコードを実行する

 これによりSMMコンテキストで任意のコードが実行される

copy 2013 The MITRE Corporation All rights reserved

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 41 |

キャッシュ攻撃 (1 of 2)

 このケースでのSMRAMのベースは DFF00000  まず攻撃者はMTRRでSMRAMのリージョンをWriteBackにする  次にSMRAMの位置に書き込んでSMRAMに対応するキャッシュラインに毒入れする

CPU キャッシュ

Location Contents DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM code

CPU

DFF00000= badc0de

copy 2013 The MITRE Corporation All rights reserved

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 42 |

キャッシュ攻撃 (2 of 2)

 最後に攻撃者はシステム管理割り込み (SMI)を発生しCPUをSMMに移行させ毒入れしたキャッシュエントリを実行させる

 こうして攻撃者は特権を持つSMMのコンテキストで任意のコードを実行する

CPU キャッシュ

位置 内容 DFF00000 badc0de

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMM コード

CPU

EIP=DFF00000 Executing badc0dehellip

SMI

copy 2013 The MITRE Corporation All rights reserved

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 43 |

BIOSWE キャッシュ攻撃

 SMMインストラクションのから戻った直後をSMIのエントリポイントとして毒入れする

 これでSMMはBIOSWEをセットできなくなる

CPU キャッシュ

位置 内容 DFF00000 0F AA2

C1000 E9 FF 00 F0000 00 00 00

RAM

位置 内容 A0000 A1000

hellip C1000

hellip DFF00000

FF FF FF F1 00 1B

hellip E9 FF 00

hellip SMMコード

CPU

DFF00000= RSM1

1 RSMはシステムマネージメントopcodeからの戻り 2 0F AA はRSMインストラクションのopcode

copy 2013 The MITRE Corporation All rights reserved

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 44 |

BIOSWEによる保護を無効化 (1 of 2)

 ふたたび攻撃者はBIOSチップの上書きをするためにBIOS書き込み許可ビットを1にセットする

Ring0コード BIOS_CNTL

SMM

BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 45 |

BIOSWEによる保護を無効化 (2 of 2)

 同様に書き込みに対するSMIが発生するが今回はSMMはBIOSWEを0にセットすることなくただちに戻る

Ring0コード BIOS_CNTL

SMM

OK BIOS_CNTLBIOSWE = 1

copy 2013 The MITRE Corporation All rights reserved

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 46 |

BIOSWEによる保護を無効化のデモ

 これでBIOSWEビット (BIOS_CNTL = 0xB)をセットしBIOSチップを任意のイメージで書き換えることができる

 フラッシュの上書きを防止するという署名済みファームウェアの要件はこうして回避される

copy 2013 The MITRE Corporation All rights reserved

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 47 |

毒入れ再フラッシュバグの結論

 CERTには VU255726として報告済み  SMMのキャッシュ毒入れ攻撃を防止するSMM範囲レジスタが導入されこのバグは新しいシステムのほとんどで修正済み

  Important takeaway ndash 大部分のOEMはフラッシュチップの保護をBIOS_CNTLでしか実施していないためSMRAMを変更できる脆弱性が存在するとBIOSの再フラッシュにつながる

copy 2013 The MITRE Corporation All rights reserved

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 48 |

Unified Extensible Firmware Interface

 UEFIで問題は解決するか ndash しないIntelのフラッシュ保護メカニズムは同一でベンダは

BIOS_CNTLレジスタによる保護しかしていないのでSMRAMへの侵入に対して脆弱のまま

ndash ベンダは独自のファームウェアルーチンを実装し続けている ndash フラッシュチップに対してなんの保護もなされていないまま出荷されているUEFIシステムも確認されている

 ある意味においてはUEFIが攻撃者の味方になっているともいえる

copy 2013 The MITRE Corporation All rights reserved

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 49 |

UEFIの解析は容易

 UEFIでは標準として「ファームウェアボリューム1 」が定義されており関連するコードを容易にパースできる

1 EFIPWN httpsgithubcomG33KatWorkEFIPWN

copy 2013 The MITRE Corporation All rights reserved

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 50 |

懸念すべき傾向

 膨大なコードがSMM内部で実装されている  この中に1つでも攻略可能なバグがあればファームウェアの再フラッシュバグにつながる

copy 2013 The MITRE Corporation All rights reserved

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 51 |

修正されていない脆弱性

 デモ

copy 2013 The MITRE Corporation All rights reserved

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 52 |

結論

 OEMは保護範囲レジスタを使用すべきにも関わらず大半のベンダは使用していない

 フラッシュの保護手段をBIOS_CNTL だけに依存するとSMMのセキュリティがフラッシュチップのそれに直結してしまう

 OEMのファームウェア更新ルーチンに脆弱性が存在するとシステムファームウェアの再フラッシュが可能になる

 こうした問題はUEFIとBIOSに共通する  いまだにフラッシュチップの保護がなされていないUEFIシステムが出荷されている

copy 2013 The MITRE Corporation All rights reserved

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

copy 2013 The MITRE Corporation All rights reserved

Xeno Kovah John Butterworth Corey Kallenberg Sam Cornwell

Copernicus 2 SENTER the Dragon プレビューバージョン

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 54 |

Copernicusに検知されない方法はあるか

 よく聞かれる質問  答えはイエス  Copernicusはベストエフォートベースかつ最小限の要件でデプロイが可能な悪意のあるファームウェアの検知ツール ndash  BIOSの状態を可視化したWindowsで最初のツール ndash ファームウェアのチェックはほとんどなされていなく悪意のあるファームウェアでは検出される可能性があまり想定されていないため予想以上に検出できる

ndash 検出対策を怠っていた場合このツールの存在そのものが攻撃者の開発コストの増加につながる

 ここからCopernicusの信頼性を向上させるのに必要だった事項を取り上げる

copy 2013 The MITRE Corporation All rights reserved

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 55 |

攻撃その0 ndashCopernicusに対するDoS

 Copernicusの実行阻止  おそらく容易に検出可能だがその目的は

copy 2013 The MITRE Corporation All rights reserved

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 56 |

攻撃その1 ndash Copernicusの出力を改ざん

 OS内部からCopernicusのコードにフックを仕込む  OS内部から「DDefy」ルートキット方式のフックをファイルの書き込みルーチンに仕込む (TODO 新しい方式のDdefyがあった気もするがメモリフォレンジックが対象のはず)

 ハードディスクコントローラのファームウェアから [cite 3]  OS内部からネットワークパケットフィルタドライバで  NICのファームウェアから [cite 2]

copy 2013 The MITRE Corporation All rights reserved

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

AUackその2 ndash 新たな攻撃手法 初公開

bull  SPIの読み込みおよび書き込み時にSMMに通知できる bull  BIOSが攻撃者の支配下にあればSMMのセットアップも攻撃者の支配下にある

bull  この手法ではBIOSに侵入した攻撃者がBIOSの整合性チェックに対してSMMの中間者攻撃を仕掛けられる

bull  このSMM中間者攻撃を ldquoSmitersquoem the Stealthyrdquoと命名

copy 2013 The MITRE CorporaKon All rights reserved

hUpwwwcreaKveuncutcomgallery‐11gw2‐dragon‐eyehtml

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 58 |

Smitersquoem Engineering a dragon

 SmitersquoemはSPIフラッシュへの読み込みを中間者攻撃する実証コード ndash  SPIフラッシュをダンプするアプリケーションから存在を隠ぺいできる

ndash アプリケーションにはCopernicusFlashromIntel ChipSecMcAfee DeepDefenderやRaytheon Pikewerks社のFirmware Forensicsなどが含まれる

 複数の実装方法 ndash 割り込みドリブン ndash FSMIEビット ndash ポーリング ndash SCIPFDONEビット ndash  VMXベース

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 59 |

SPI (Serial Peripheral Interface)フラッシュ

  Intelはプログラム可能なSPIフラッシュデバイスのインターフェースを提供している ndash システムBIOSもここに存在する

ndash 他にも  Copernicusはこのインターフェースを使用しSPIフラッシュをダンプする

Intel IO Controller Hub 10 Datasheet page 31

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 60 |

SPI Flashのプログラミング

  SPIホストインターフェースレジスタはRCRB (Root Complex Register Block)にあるオフセット位置のメモリにマップされる

 アプリケーションハードウェアもしくはソフトウェアシーケンシングを選択できる ndash 議論をわかりやすくするためにハードウェアシーケンシングに関連するオペレーションや細部についてのみ言及する   ソフトウェアシーケンシングは粒度の細かいコントロールを提供するだけ

ndash このスライドのSPIレジスタについては次のURLを参照 ndash  httpwwwintelcomcontentwwwusenioio-controller-hub-10-family-

datasheethtml

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 61 |

SPIプログラミングフラッシュアドレスレジスタ

 SPI IOサイクルのアドレスを指定 ndash システムRAMのアドレスではなくフラッシュのアドレス ndash 有効な範囲は0からフラッシュチップのサイズ -1まで

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 62 |

SPIプログラミングデータレジスタ

  SPIフラッシュから読み込んだデータ(64バイトまで)を保持する  読み込みおよび書き込み可能 (フラッシュに書き込むデータを指定するのにも使えるため)

  SmitersquoemはこのデータをSMM内部から上書きする

hellip

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 63 |

SPIプログラミングコントロールレジスタ

 SPI IOサイクルを実施 ndash アプリケーション(Copernicus)から使用する

  IOサイクルで読み込む (もしくは書き込む)ビット数を定義

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 64 |

SPIプログラミングステータスレジスタ

 SPI IOサイクルが実行中であるかを示す  ハードウェアが自動的にセット

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 65 |

 SPI IOサイクルが完了したかを示す  Smitersquoemはこのビットをポーリングし SPI IOサイクルが完了したのを確認してFDATAレジスタのデータを改ざんする

SPIプログラミングステータスレジスタ 2

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 66 |

 このレジスタでSMMに侵入した攻撃者はフラッシュチップへのアクセスを検知できる

 読み込みと書き込み後にFlash Cycle Doneビットは1にセットされる

Eye of the dragon - FSMIE ndash ハードウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 67 |

Eye of the dragon - FSMIE ndash ソフトウェアシーケンシング

copy 2013 The MITRE Corporation All rights reserved

 ソフトウェアシーケンスでフラッシュにアクセスした場合の検知に使えるビット

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 68 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込む場所 (チップ全体を読む過程で)と読み込むバイト数をセットする

FADDR=00000hellip FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FADDR = 0x1000 FCYCLE=00(read)

FDBC = 111111b (64 byte read) Ring 0

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 69 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicusが読み込み開始を命令する

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FGO=1 Ring 0

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 70 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが進行中

FADDR=0x1000 FDATA0=00000hellip

FDONE=0

SCIP=1 FCYCLE=0

FGO=1 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

Ring 0

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 71 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 サイクルが完了しデータが読み込み可能になった状態でFSMIEが1の場合にSMIが生成され てSmitelsquoemに通知が送られる

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

SMI

Ring 0

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 72 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Smitelsquoemはその存在を示すデータを無害なデータに改ざんする

FADDR=0x1000 FDATA0=0x1badd00d

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem FDATA0=0xf005ba11

Ring 0

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 73 |

Smitelsquoem実行中におけるフラッシュチップの読み込み

 Copernicus 1 (もしくはフラッシュを読み込む他のアプリケーション)は騙される

FADDR=0x1000 FDATA0=0xf005ba11

FDONE=1

SCIP=0 FCYCLE=0

FGO=0 FSMIE=1

copy 2013 The MITRE Corporation All rights reserved

SMM

Smiteem

FDATA0を読み込む

0xf005ba11 Ring 0

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 74 |

知られていない危険性

 ハードウェアソフトウェアシーケンシングのFSMIEビットが考慮されていない場合(これまでのソフトウェアで考慮していたものはない)BIOSの改ざんは見落とされてしまう

 基本的な対策としてクエリを投げるツールが読み込む前にFSMIEビットを0にセットすればいいように思えるが

 対抗策も複数 ndash 継続的にFSMIEを1にセットするカーネルエージェント   クリアしてもセットしなおされてしまうなら

ndash  SPI空間へのMMIOをVMXで横取りしFSMIEをクリアしたと思わせる   攻撃者もVMXを使えばFDATAを直接偽装できる

ndash 特定のセキュリティソフトウェアを標的にする   ツールが攻撃者を検出できるほど優秀ならそのツールを出し抜くインセンティブが攻撃者にも働く

copy 2013 The MITRE Corporation All rights reserved

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 75 |

別の方法もある

 これまで紹介した方法は可能ではあるもののやや強引なきらいがある

 今回は時間の都合でできないが別のプレゼンテーションで別の方法を紹介する予定

 ご期待ください

copy 2013 The MITRE Corporation All rights reserved

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 76 | Smiteem vs Copernicus 2

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 77 |

Smitersquoemの対策は

 We could utilize our Checkmateによるタイミングベースの構成証明システム [19] をCopernicusカーネルドライバから実行しSMI無効化やFSMIE無効化を ldquo改ざんされていない実行環境rdquoチェックとしてセルフチェックに組み込んでしまうこともできた

 しかしより直接的なアプローチの機会があり同時に他のトラステッドコンピューティング技術でうまくできる方法もあった

  SmitelsquoemはSMM内部にあるのだからSMIを無効にすればよい  しかしOSのドライバから無効にするだけでは不十分で攻撃者は無効にするコードを無効化できる

  IntelのTXTの副作用でSMIが無効に   Intel Trusted Execution Technology (TXT)の仕組みを理解しよう

ndash  TXTはマーケティング用語でIntelのマニュアルでは ldquoSafer Mode Extensionsrdquo (SMX)と呼ばれる

copy 2013 The MITRE Corporation All rights reserved

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 78 |

copy 2013 The MITRE Corporation All rights reserved

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 79 |

Intel トラステッドエグゼキューションテクノロジー (TXT)

 Dynamic Root of Trust for Measurement  起動後に信頼性を提供する手段のひとつ

ndash 侵入された可能性のあるシステムでTXTを起動するとあらかじめ設定され信頼が置ける状態を保障できる

copy 2013 The MITRE Corporation All rights reserved

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 80 |

copy 2013 The MITRE Corporation All rights reserved

From httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20slidespdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 81 |

対象はTXTのサブセットのみ

 GETSEC[CAPABILITIES]と GETSEC[PARAMETERS]をサニティチェックにだけ使う必要がある

 MLEの開始および停止させるSENTERとSEXITが主な対象  SMCTRLと WAKEUPは使わない

ndash  SMMを対象のSMMコードを停止させるのがポイント

copy 2013 The MITRE Corporation All rights reserved

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 82 |

Invisible Things LabのTXTに対する攻撃

 「彼らによればいくつもの攻撃方法が存在するのでは」  「つまりTXTはまったく信頼できないということでは」  答えはNo   TXTは攻撃手段があることを意識した上で使わなければならないということにすぎない

 レビューの時間がないので別のプレゼンテーションで

copy 2013 The MITRE Corporation All rights reserved

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 83 |

Lets build this thing

copy 2013 The MITRE Corporation All rights reserved

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 84 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOS エイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 85 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 86 |

Copernicus 1 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 87 |

Smitersquoem攻撃

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

SPIフラッシュチップ

UEFI BIOSファームウェア

Copernicussys

PCH

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 88 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 89 |

全体の動き

  Copernicus2sysの最初のアクション ndash  MLEの実体化

 MLEのアクション ndash 設定情報の読み込みテキストをバッファに格納バッファをPCR18に拡張

ndash  BIOSを1MBずつ読み込みバッファに格納バッファをPCR18に拡張

ndash  SEXIT

 復帰後のCopernicus2sysのアクション ndash  PCR 17と18に対してTPMのQuoteコマンドを実行しディスクに格納

ndash 同様に設定とBIOSを読み込みディスクに格納

copy 2013 The MITRE Corporation All rights reserved

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 90 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

ディスクからコピーしたSINIT ACM

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 91 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC

Construct MLEとページング構造体

ディスクからコピーしたSINIT ACM

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 92 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

Setup TXTヒープ構造体

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 93 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH ヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体 SENTER

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 94 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 95 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 96 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x0000 PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 97 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 98 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0x0000

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Store

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 99 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 100 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 101 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xac02

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 102 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 103 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 104 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xf005

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 105 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 106 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

SEXIT

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 107 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

Copernicusにレジューム

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 108 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 109 |

Copernicus 2 アーキテクチャ

copy 2013 The MITRE Corporation All rights reserved

CPU

キャッシュ

RAM物理アドレス空間 High

Low

BIOSエイリアス (high mem)

SMRAM

フラッシュチップ

UEFI BIOSファームウェア

Copernicus2sys

PCH TXTヒープ

SINITエリア

Measured Launch Environment (MLE)

TPM PCR0 = 0xfa7ehellip hellip PCR17 = 0x136b PCR18 = 0xba11

SPI LPC MLEとページング構造体

ディスクからコピーしたSINIT ACM

TXTヒープ構造体

ディスクからコピーしたSINIT ACM

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 110 |

Done

 MLEの内部からデータをディスクに実際に書き込む必要はないデータを収集しTPMのPCRにハッシュを保存すればよい ndash 余分にSMIが無効化されたMLE内部にいなくてもよいので複数のOSのサポートやパフォーマンスという点でも優れている

 Copernicus 2を「信頼のおける」システムとするために必要になったステップや努力hellipこれがCopernicus 1を「ベストエフォート」システムとしてリリースすることにしたそもそもの理由

 トラステッドコンピューティングは難しい ndash 言いかえるとこうしたレベルまで実装しなければ結果はまったく無意味に

 「他のTXTの評価者も一様に『これは複雑だ」とコメントした彼らに「何を取り除くべきか」と質問したがその解答は『取り除けるものはないと思う』というものばかりだった」 ndash  Intel社のDavid Grawrockによる ldquoDynamics of a Trusted

Computing System A Building Blocks Approachrdquoの11章より copy 2013 The MITRE Corporation All rights reserved

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 111 |

計測結果の確認

  TPM PCR 17と18のQuoteコマンドから署名をバリデート  PCR18を確認  SHA1( hellip SHA1(SHA1(SHA1(SHA1(020 | MLE) | configtxt) |

BIOSMB[0]) | BIOSMB[1]) hellip BIOSMB[N]) ndash  BIOSMB[0]は1MBチャンクの0番目BIOSMB[1]が1番目

BIOSMB[N]まで   ldquoPCR 17rdquoセクション(Trusted Execution Technology Software

Development Guide 1911 2013年7月付)にあるフィールドと値からPCR17が取得されているのを確認

  (注意 確認作業は信頼性の確認が取れているプラットフォーム確認作業以外を目的にしないサーバなどで実施すべきで侵入された可能性のあるシステムで信頼性の確認をしてはいけない)

copy 2013 The MITRE Corporation All rights reserved

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 112 |

すべてがあっていれば

 本物の計測結果を手にしたということ  次は悪意のあるコードが含まれているかどうかの判定が必要になる   John ButterworthがBIOS解析講座を実施予定

ndash それまでに必要な課題をこなすこと (ページングポートIOスタティックREIDAなど)

ndash 詳しくはhttpOpenSecurityTraininginfo

copy 2013 The MITRE Corporation All rights reserved

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 113 |

結論

 攻撃者にSMMを乗っ取られるとSPIの読み取りおよび書き込みには中間者攻撃の可能性が存在する

 その攻撃を実際に実装した ndash  Smitersquoem the Stealthy

 偉大なるヒーローCopernicusは怪物の体内に潜入しTXTの力によって討伐して

 Copernicus 2テクノロジーを使わずにBIOSを計測した結果は信頼できない ndash ご購入の際にはCopernicus 2対応済みの製品をお勧めします ndash ファームウェアの整合性検査をしている会社にはライセンスを提供

  TXTがサポートされていないもしくはベンダの実装がダメな場合は残念ながら脆弱性は解消できない ndash ドラゴンSmitersquoemrsquoの子供たちはローエンド製品にも生息している

copy 2013 The MITRE Corporation All rights reserved

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 114 |

FAQ Questions

 Copernicus 1と2のソースコードは ndash  Xeno ndash xkovahmitreorgまでご連絡を ndash 膨大なホスト上でのCopernicusの実行結果の提供もしくはライセンス料が必要

  TXTがサポートされていないもしくは有効にできない場合に Copernicus 1を実行する意義はあるか ndash あるおそらく攻撃者はCopernicus 1の存在を予想していないしSmitersquoem機能を実装していないケースを見つけられる可能性はある

 ベンダXの計測結果は信頼できるか ndash おそらくできないいくつかのベンダに技術提供の話をしてみたがまとまってはいない

copy 2013 The MITRE Corporation All rights reserved

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 115 |

References   [1] Attacking Intel BIOS ndash Alexander Tereshkin amp Rafal Wojtczuk ndash Jul 2009

httpinvisiblethingslabcomresourcesbh09usaAttacking20Intel20BIOSpdf   [2] TPM PC Client Specification - Feb 2013

httpwwwtrustedcomputinggrouporgdeveloperspc_clientspecifications   [3] Evil Maid Just Got Angrier Why Full-Disk Encryption With TPM is Insecure

on Many Systems ndash Yuriy Bulygin ndash Mar 2013 httpcansecwestcomslides2013Evil20Maid20Just20Got20Angrierpdf

  [4] A Tale of One Software Bypass of Windows 8 Secure Boot ndash Yuriy Bulygin ndash Jul 2013 httpblackhatcomus-13briefingshtmlBulygin

  [5] Attacking Intel Trusted Execution Technology - Rafal Wojtczuk and Joanna Rutkowska ndash Feb 2009 httpinvisiblethingslabcomresourcesbh09dcAttacking20Intel20TXT20-20paperpdf

  [6] Another Way to Circumvent Intelreg Trusted Execution Technology - Rafal Wojtczuk Joanna Rutkowska and Alexander Tereshkin ndash Dec 2009 httpinvisiblethingslabcomresourcesmisc09Another20TXT20Attackpdf

  [7] Exploring new lands on Intel CPUs (SINIT code execution hijacking) - Rafal Wojtczuk and Joanna Rutkowska ndash Dec 2011 httpwwwinvisiblethingslabcomresources2011Attacking_Intel_TXT_via_SINIT_hijackingpdf

  [7] Meet Rakshasa The Malware Infection Designed To Be Undetectable And Incurable - httpwwwforbescomsitesandygreenberg20120726meet-rakshasa-the-malware-infection-designed-to-be-undetectable-and-incurable

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 116 |

References 2

  [8] Implementing and Detecting an ACPI BIOS Rootkit ndash Heasman Feb 2006 httpwwwblackhatcompresentationsbh-europe-06bh-eu-06-Heasmanpdf

  [9] Implementing and Detecting a PCI Rookit ndash Heasman Feb 2007 httpwwwblackhatcompresentationsbh-dc-07HeasmanPaperbh-dc-07-Heasman-WPpdf

  [10] Using CPU System Management Mode to Circumvent Operating System Security Functions - Duflot et al Mar 2006 httpwwwssigouvfrarchivefrsciencesfichierslticansecwest2006-duflot-paperpdf

  [11] Getting into the SMRAMSMM Reloaded ndash Duflot et Al Mar 2009 httpcansecwestcomcsw09csw09-duflotpdf

  [12] Attacking SMM Memory via Intelreg CPU Cache Poisoning ndash Wojtczuk amp Rutkowska Mar 2009 httpinvisiblethingslabcomresourcesmisc09smm_cache_funpdf

  [13] Defeating Signed BIOS Enforcement ndash Kallenberg et al Sept 2013 httpconferencehitborghitbsecconf2013kulmaterialsD1T120-20Kallenberg20Kovah20Butterworth20-20Defeating20Signed20BIOS20Enforcementpdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf

| 117 |

References 3   [14] Mebromi The first BIOS rootkit in the wild ndash Giuliani Sept

2011 httpwwwwebrootcomblog20110913mebromi-the-first-bios-rootkit-in-the-wild

  [15] Persistent BIOS Infection ndash Sacco amp Ortega Mar 2009 httpcansecwestcomcsw09csw09-sacco-ortegapdf

  [16] Deactivate the Rootkit ndash Ortega amp Sacco Jul 2009 httpwwwblackhatcompresentationsbh-usa-09ORTEGABHUSA09-Ortega-DeactivateRootkit-PAPERpdf

  [17] Sticky Fingers amp KBC Custom Shop ndash Gazet Jun 2011 httpesec-labsogeticomdotclearpublicpublications11-recon-stickyfingers_slidespdf

  [18] BIOS Chronomancy Fixing the Core Root of Trust for Measurement ndash Butterworth et al May 2013 httpwwwnosuchconorgtalksD2_01_Butterworth_BIOS_Chronomancypdf

  [19] New Results for Timing-based Attestation ndash Kovah et al May 2012 httpwwwieee-securityorgTCSP2012papers4681a239pdf