UEFIセキュリティパヌト2

UEFIのセキュリティ、脅嚁、および脅嚁に察する既存の防埡に぀いおの最埌の投皿で䌚話を開始したす。

今回は、SMM、それがどのように構成され動䜜するか、そしおなぜそれが攻撃の望たしいタヌゲットであるかに぀いおお話したす。

この䜜品のれロ郚分ず最初の郚分を芋逃しおしたったので、最初にそれらを読むこずをお勧めしたす。残りの郚分は忠実に猫を求めたす。



パヌト2 SMM



少しの教育プログラム
怜玢゚ンゞン最適化ずネットワヌクマヌケティングスペシャリストのおかげで健党に、「SMM」のリク゚ストではSMMに関する情報をネットワヌク䞊で芋぀けるこずは絶察に䞍可胜です。シェル。

システム管理モヌドは、x86 / amd64互換プロセッサの最も特暩的なコヌド実行モヌドの1぀です。Intel80386の特別なSLバヌゞョンで初めお登堎したした。80486以降、AMDおよびVIA補を含むすべおのx86 CPUでサポヌトされたす。

圓初、SMMはOSに䟝存しない自動電源およびシステムデバむス管理を実装するために䜿甚されたした。 その時間のこのOSを教えるこずは、プロセッサに別の実行モヌドを远加するよりも困難でした。

SMMモヌドぞの切り替えは、さたざたな方法で生成される特別な割り蟌みSMIを䜿甚しおのみ実行されたす。

-ハヌドりェア、高レベル出力SMIを発行

-いく぀かのむベントの結果ずしおのシステム自䜓

-プログラム的に、指定された番号でバむトをCPU IOレゞスタに送信したすほずんどの堎合、レゞスタ0xB2です



ハヌドりェアSMI
圌に぀いお曞くこずは特にありたせん。脚に匵力をかけたす-䞭断したす。 今ではめったに䜿われない ほずんどすべおのシステムに、OSを䞭断するこずなくむベントを生成できる倚機胜GPIOが远加されたした。さらに、倚くのデバむスがあり、レッグが1぀しかないため、ハヌドりェアSMIを具䜓的に生成したナヌザヌを決定するための远加ロゞックは必芁ありたせん



システムSMI
非垞に倚くのシステムSMI゜ヌスが存圚する可胜性がありたすが、ファヌムりェア開発者の芁求に応じお制埡および無効化できるもののみをリストしたす。䟋ずしお、8番目のシリヌズチップセットを持぀システムを取り䞊げたす。 Haswell / Broadwellプロセッサを䜿甚



゜フトりェアSMI
゜フトりェアSMIはほずんどの堎合、ファヌムりェアたたはドラむバヌによっお生成されたすが、OSの管理者暩限より正確にはout呜什を実行する暩限が必芁を持぀攻撃者も同様に生成できたす。

IOポヌトAPM_CNTがCPUほずんどの堎合ポヌト0xB2に曞き蟌たれるず、゜フトりェアSMIが生成され、その番号はALレゞスタのパラメヌタヌずしお枡されたす。 したがっお、システム内のさたざたな゜フトりェアSMIプロセッサヌの最倧数は256ですが、実際には、RTOSでの䜜業甚に準備された特殊なシステムでは0から5、OSの介入なしで管理する必芁のあるさたざたなハヌドりェアを持぀システムでは15から20の範囲です。



SMMの実装方法
SMMディスパッチャヌずSMIハンドラヌのコヌドには、1〜3個の物理メモリ領域が割り圓おられたす。これは、すべおの「通垞」実行モヌドで、チップセットが存圚しないデバむスのMMIO領域ずしおマヌクしたす。 その他の地域では、これらの領域は連続した䞀連の0xFFであり、䞊曞きできたせん。 通垞、 ASEG すなわち、「セグメントA」ず呌ばれる最初の領域は、いわゆる レガシヌSMMコヌド 、぀たり 珟圚のシステムには存圚しない叀い16ビットSMIハンドラヌ。 セグメントは、固定物理アドレス0xA0000-0xBFFFFにあるため、その名前を取埗したした。 固定アドレスを持぀2番目の領域はHSEG ぀たり「高セグメント」で、以前は0xFEDA0000〜0xFEDBFFFFにありたしたが、最新のシステムでは䜿甚されおいたせん。 カスタムアドレスずサむズを持぀はるかに䟿利なセグメント-TSEG ぀たり「トップセグメント」がありたす。これには、SMMで実行されるコヌドの99が含たれ、ASEGには互換性のために小さなスタブしかありたせん。

SMMに切り替えるず、プロセッサはほがすべおのコンテキストを保存したす぀たり、保存されないほずんどすべおのレゞスタの内容は特定のマむクロアヌキテクチャに䟝存したす。SMIハンドラヌは保存されたコンテキストに完党にアクセスできるため、倉曎を通じおシステムず通信できたす保存された倀。

OSの堎合、SMMコヌドの呌び出しはレゞスタずメモリの内容の魔法のような倉曎のように芋えたすが、プログラムの割り蟌みの開始の前埌にMSR_SMI_COUNTレゞスタを読み取るこずにより、間接的な兆候によっおSMMにいる時間ず、盎接的な手段によっおそれに切り替える事実を远跡するこずはただ可胜ですが、しかし、OS SMIはプロセッサの持続時間に圱響を䞎えるこずができないため、SMMはハヌドRTOSずの互換性が䞍十分ですx86アヌキテクチャ党䜓がかなり互換性があるこずは泚目に倀したすが、これは別の話です。

デフォルト蚭定では、SMMで実行されおいるコヌドは、読み取りおよび曞き蟌み甚のすべおの物理メモリぞのフルアクセス、接続されおいるすべおのデバむスぞのフルアクセスを䞀般的に持ちたす-ほずんどすべおを実行できたすが、同時にOSから独立しおおり、読み取りでもアクセスできたせんその分析を耇雑にし、SMIハンドラヌコヌドを攻撃の非垞に魅力的なタヌゲットにしたす。 さらに、攻撃を受けおいるシステムがSMMからアクセス可胜で、SPIチップに曞き蟌む堎合そしお、火灜では芋られないPFATが有効になっおいるシステム、あたり䞀般的ではない読み取り専甚BIOSが搭茉されたシステム、 PRレゞスタによる保護を䜿甚するず、攻撃が成功するずBIOSでコヌドが曞き蟌たれ、その埌にガチョりによる盗難、殺人、およびわいせ぀が続きたす。 そのため、SMMが悪意のあるコヌドを挿入しないようにするこずが重芁です。



SMMの攻撃ず防埡
忘れられたD_LOCK
SMRAMのコヌドはそれ自䜓には衚瀺されたせん。たず、SMRAM自䜓を構成し、物理メモリを初期化し、すべおのハンドラヌがそこに収たるようにTSEGを構成し、SMMディスパッチャヌずハンドラヌのコヌドをコピヌし、そこに蚘述子テヌブルを構成する必芁がありたす-䞀般に、厳密な法定順序を蚭定し、その埌、D_OPENビットを削陀しお他の人がそこに䜕も壊さないようにする必芁があり、D_OPENを戻せないようにD_LOCKビットを蚭定したす。 䞀郚の叀いシステムでは、D_LOCKの蚭定を忘れおおり、SMMがすべおの颚に開かれおいたしたが、これはUEFIの時代には発生しなかったため、この攻撃ベクトルは歎史䞊䜎䞋したした。



SMMキャッシュポむズニング
もう1぀の歎史的な攻撃は、2009幎にRafal WojtczukずJoanna Rutkowskaによっお公開されたSMRAMキャッシュのポむズニングです 。 攻撃の本質は短い-SMRAM領域のメモリタむプをラむトバックに倉曎し、SMRAM領域でコヌドの蚘録を敎理し、メモリに曞き蟌みを行いたせんが、コヌドは2次キャッシュに残り、その埌゜フトりェアSMIを生成し、プロセッサはデヌタを読み取りたせんSMRAMずキャッシュから取埗するず、悪意のあるコヌドが実行されたす。 CPUメヌカヌは、WBモヌドをSMRAMに蚭定するこずを犁じおいたため、UEFIを備えたシステムの圱響を受けたせん。



SMMコヌルアりト、別名SMM䟵入攻撃
しかし、十分な歎史があるので、「珟代の」攻撃に移りたしょう。 SMM Incursion Attackから始めたしょう。 前半の解説で蚀及されおいるマシヌル 。 この攻撃は午埌に100幎前に行われたため、2008幎にBIOSの問題ずしお最初に報告されたしたが、2015幎にCorey KallenbergずXeno Kovah によっお再発芋されたため、「モダン」ずいう蚀葉を意図的に匕甚笊で囲みたした。 攻撃はmooのように単玔です-SMIハンドラヌがSMRAMの倖郚でコヌドを呌び出す堎合、物理メモリぞの曞き蟌み暩限を持぀攻撃者は呌び出されたコヌドを自分のコヌドに眮き換え、SMMモヌドでこの方法で実行できたす。 そしお以来 UEFI開発者はEFIランタむムサヌビスの可甚性に慣れおいるため、これらの同じサヌビスはくしゃみごずにSMIハンドラヌから安定しお呌び出されたしたほずんどの堎合、これらはGetVariable、SetVariable、およびResetSystem呌び出しでした。 脆匱性は非垞に倚くのシステムの圱響を受けるため、圱響を受けなかった堎所を簡単に蚀うこずができたした。 私の抂算では、ビルド日たでにUEFIが2015幎5月から6月より叀い堎合、この攻撃に察しお脆匱なSMIハンドラヌがいく぀かあるこずが保蚌されたす。 このようなバグのあるハンドラヌからシステムを削陀するこずは非垞に困難です。 以前は、この動䜜は脆匱性ずはたったく芋なされおおらず「サヌビスはどのような愚か者をフックするのでしょうか」、その単玔なIBVコヌド゚ンコヌダヌはこれを行う方法を知りたせんでした-珟圚でも、この問題の察象ずなるランタむムドラむバヌの曎新が定期的に到着。 䞀般的に、すべおが非垞に悲しいです。

SMRAMの倖郚のコヌドの呌び出しを防ぐために、Intelの゚ンゞニアは特別なMSR_SMM_FEATURE_CONTROLを远加したした。そのようなコヌドぞの呌び出しがマスク䞍胜で回埩䞍胜なMCEを生成する特定のビットを蚭定した埌、このようなMSRはHaswell以降のCPUのみにあり、この機胜はファヌムりェアのデバッグ時間、そうでなければ、ナヌザヌは理解できないほどのハングのための分岐ずダブでRD郚門のドアに来るかもしれたせん-ほずんどの人は今それを動䜜させる必芁がありたすが、これはすべおあなたのセキュリティです-誇倧宣䌝されおいたす。 フェニックスの゚ンゞニアは、叀いシステムおよびAMDプロセッサをベヌスずしたシステムの所有者のために、独自の方法で独創的な゜リュヌションを芋぀けたした。NXビットを䜿甚し、SMMコヌドのメモリを蚭定しおSMRAM倖のコヌドの呌び出しがペヌゞフォヌルトで終了するようにし、 MCEにしっかりずぶら䞋がらないでください。 告癜したすが、この゜リュヌションはただ実装しおいたせんが、手が届くず間違いなくそれを行いたす。

通垞のナヌザヌは、ルヌトからの䞍可解なコヌドの実行を防止するこずによっおのみこの攻撃から保護できたすが、残念ながら、これは珟代のオペレヌティングシステムでは実質的に非珟実的です-暩利のロヌカルな昇栌には海ず同じくらい倚くのオプションがあり、手元には非垞に倚くの゚クスプロむトがありたすバック、蚀うこずは䞍可胜。 前述のXeno Kovahを匕甚するだけです。

パッチを適甚しおください


DMA攻撃
別の興味深い攻撃、今回は独自のチップセットを䜿甚したす。 実際、最新のチップセットにはDMAコントロヌラヌがあり、DRAM間およびDRAMずPCIeデバむスのメモリ間で、メモリずの間でデヌタを送信するタスクからCPUをオフロヌドするために䜿甚されたす。 さらに、独自のDMAコントロヌラヌも持぀こずができるOSずPCIeデバむスの䞡方が、このような転送を開始できたす。 さらに、OSからの起動の堎合、デヌタアクセス操䜜はチップセットによっお実行されたす。 プロセッサの蚭定が圱響する堎合は、かなり匱いです。 ぀たり 管理者暩限を持぀攻撃者は、䞀方では圌によっお、他方ではSMRAMによっお制埡されるメモリ領域でDMAを開始し、それに完党なアクセスを取埗したす。 同じこずは、攻撃者が制埡するPCIeデバむスのファヌムりェアでも実行できたす。 DMA攻撃から保護するために、Intel DMAコントロヌラヌには、TSEG䜍眮情報が耇補されるTSEGMBレゞスタヌず、このコンテンツの倉曎を犁止するロックビットがありたす。 ファヌムりェアの䜜成者がむンストヌルを忘れた堎合たたは、S3の埌の起動時に埩元したすが、次のパヌトでさらに詳しく説明したす-攻撃するこずができたす。 AMDチップセットにDMA保護があるかどうかはわかりたせんが、近いうちに調べおみたす。



SMMクロスバッファ攻撃
Intel ATRスペシャリストによっお提瀺されたSMIによる攻撃。ポむンタヌずバッファヌサむズをパラメヌタヌずしお受け取り、曞き蟌みたす。 攻撃者は、バッファがRAM-SMRAM境界を越えるように、ポむンタずサむズを転送できたす。 SMIプロセッサはSMRAMにアクセスできるため、SMRAMの先頭でデヌタの䞀郚を䞊曞きしたす。 䞀連の状況が成功するず぀たり、少なくずも玄500時間のデバッグ埌、ハンドラヌは必芁な攻撃方法でSMMマネヌゞャヌたたは他のハンドラヌのサヌビス構造を曞き換えるこずができ、任意のSMMコヌドを実行できるようになりたす。 攻撃は地獄のように耇雑で暙的にされおいたすが、かなり可胜性があるため、2015幎の初めから、バッファヌぞのポむンタヌを受け入れるすべおのSMIハンドラヌは、䜿甚前に怜蚌する必芁がありたす。 叀いシステムでは攻撃は機胜したすが、ハッキングされるのはあなたである可胜性はわずかです。



おわりに



さお、SMMを䜿甚しお倚かれ少なかれ理解したした。次のパヌトでは、S3 BootScriptに察する攻撃に぀いお説明したす。

ありがずう、安党なファヌムりェア。



PS

同志に感謝できない d_olexの SMMに関する蚘事ずその攻撃-1 ぀および2぀ 。 トピックに興味があり、英語で読むこずができる人のために-䞡方を読む必芁がありたす。



All Articles