UEFIセキュリティに぀いお、パヌト0ず最初

むかしむかし、2014幎の初めに、ほずんどのUEFI実装のセキュリティ状態を「 半神話的 」ず呌びたした。 それから1幎半が経ち、物事は慎重に動き出したしたが、これたでのずころ、゚ンドナヌザヌ向けの倚くのPCメヌカヌはこの非垞に安党性にほずんど泚意を払っおいたせん。

この蚘事では、UEFIの脅嚁モデルず攻撃ベクトル、およびBIOSチップの内容の䞊曞きに察する保護に焊点を圓おたす。これは、攻撃の可胜性のある結果を最も砎壊するものです。

UEFI保護がどのように機胜するか、および最新のシステムで修正されおいない特定の脆匱性に関心がある堎合は、Catぞようこそ。



パヌトれロ。 はじめに



私はかなり長い間、 UEFI互換ファヌムりェアのセキュリティに興味があり、ほが2幎間専門的にやっおいたす。 この蚘事を曞いた理由は、UEFIセキュリティに関する情報がむンタヌネットのロシア語郚分にほずんど完党に存圚しないこずでした。ただし、このテヌマにあたり粟通しおいない人々が䜜った有名な英語圏の研究者による蚘事の翻蚳は䟋倖です。 このギャップは埐々に埋める必芁がありたす、なぜなら それ以倖の堎合は、「フリヌ゜フトりェアに察するセキュアブヌト」、「UEFI-悪魔の創造」などのさたざたなスロヌガンで満たされたす。 事前にこの蚀語に぀いお謝眪したす。長い間ロシア語を話したり曞いたりしないず、ロシア語のこずを考えるのをやめおしたいたす。そのため、構造は非垞に奇劙になりたす。



脅嚁モデル
保護ず脆匱性に぀いお話す前に、脅嚁モデルに぀いお少し話したしょう。

䞀床にすべおに察しお防埡するこずはできたせん。 たずえば、栞爆発の損傷効果や宇宙での䜜業䞭の障害からファヌムりェアを保護するこずは、この蚘事では考慮したせんが、関連分野の専門家から同様の蚘事を読みたいず思いたす。



アクセスレベル
攻撃者に察しおいく぀かのレベルのアクセスを定矩し、「平均的な」UEFI実装が䜕にどの皋床成功するかを確認したす。

-第1レベルの攻撃者は、システムに物理的にアクセスし、OSをロヌドし、UEFI蚭定を倉曎し、プログラマヌの元のコヌドの代わりにUEFIコヌドをフラッシュし、マットのゞャンパヌを再配眮できたす。 回路基板、短絡、超小型回路の結論など

-第2レベルの攻撃者はシステムに物理的にアクセスできたすが、プログラマヌはいたせん。

-第3レベルの攻撃者は、管理者モヌドでシステムにリモヌトアクセスできたす。

残りのケヌスは考慮したせん。 ボヌルに乗るチップを倉曎できる、より匷力な攻撃者からは、UEFIで防埡するものは実質的になく、管理者暩限のない匱いものはOSを停止したす。



攻撃ベクトル
ここで、危険を枛らすために、䞻なベクトルず攻撃が成功した堎合の結果を定矩したす。



1.メむンファヌムりェアの保存 最新システムの95 -SPIむンタヌフェむスを備えた1-2のNORフラッシュチップ
攻撃の本質-ファヌムりェアにコヌドを挿入し、既存のコヌドの䞀郚を削陀し、盗み、殺し、ガチョりに぀いお黙っおください。

攻撃の圱響は、ファヌムりェア、ハヌドりェア、OSの完党な制埡の取埗から、最悪の堎合のDoSにたで及びたす。 物理的な攻撃者はどのような堎合でもDoSを手配できたす絊䞎蚈算に倧きなドラむバヌを䜿甚したす-これはあなたにずっおDoSです。したがっお、第1レベルず第2レベルの攻撃者に぀いおはDoSに぀いおは觊れたせん。



2. SMMのコヌド
䞀番䞋の行は、すべおの物理メモリなど、特に特暩のあるプロセッサモヌドにアクセスできるこずです。

その結果、最良の堎合はファヌムりェアリポゞトリにアクセスし、最悪の堎合はOSおよびハむパヌバむザヌ保護メカニズムをバむパスしたすただし、OSレベルで回避される可胜性がありたすが、SMMからははるかに簡単です。



3. PCIデバむスのファヌムりェアの保存
結論-コヌドをPCIデバむスオプションROMでもありたすのファヌムりェアたずえば、ネットワヌクカヌドやThunderboltコントロヌラヌに挿入したす。UEFIは、デバむスが初期化されるずこのコヌドを実行したす。

結果-最良の堎合、最悪の堎合、ポむント1を参照しおください-ほずんど同じです、私たちはずっず埌で開始するため、いく぀かのものは既に構成され、ブロックされおいたす。



4. NVRAMの倉数
䞀番䞋の行は、非衚瀺の蚭定を含むUEFI蚭定を倉曎できるこずです。

結果-最良の堎合、すべおの保護をオフにしお、すぐに手順1に進み、最悪の堎合は再びdoSにするこずができたすガベヌゞをNVRAMに曞き蟌み、再起動し、䜕が起こったのかを確認したす。



5. SecureBoot
結論-UEFIシェルを含む任意のOSをロヌドする機䌚が埗られたす。

結果-最良の堎合、UEFIシェルをロヌドしおすぐにステップ4に衚瀺されるこずが刀明し、最悪の堎合、暙準のブヌトロヌダヌを倉曎されたブヌトロヌダヌに眮き換えたす。したがっお、譊戒ナヌザヌがSecureBootをオンに戻すたで、OSで自身を保護したす。



パヌト1 メむンファヌムりェアのストレヌゞ内の曞き蟌み保護



1.コヌド実行前のファヌムりェアたたはその䞀郚のハヌドりェア怜蚌
適切に実装された堎合、 Intel BootGuardずAMD Hardware-Validated Bootの 3぀のレベルすべおの攻撃者からファヌムりェアを保護する、私たちのリストで最も深刻なテクノロゞヌ。 现郚が倧きく異なり、同じタスクを実行したす。マザヌボヌドメヌカヌのデゞタル眲名によっお眲名されたファヌムりェアの小さな郚分の敎合性をチェックし、キヌハッシュがチップセットにフラッシュされたす。 テストが成功した堎合はファヌムりェアが起動し、倱敗した堎合はすべお蚭定に䟝存したす。 䞡方のテクノロゞヌは、埌続のブヌトステヌゞに「ハヌドりェアの信頌のルヌト」を提䟛し、ファヌムりェアはチップセットがブヌトストラップコヌドをチェックする信頌チェヌンを構築できたす。このコヌドはPEIボリュヌムをチェックし、 DXEボリュヌムをチェックしたす。 OSブヌトロヌダヌの眲名。 このように保護されたファヌムりェアの䞀郚の倉曎は、ほずんどの堎合、通垞のDoSに぀ながりたす。

そのような保護の裏偎は、システムの正圓なナヌザヌでさえファヌムりェアを倉曎できないこず、チップセットたたはSoC障害の堎合にマザヌボヌドを修埩するこずの難しさですそしお、異なるハッシュを持぀䜿甚枈みのものではなく、クリヌンなものに倉曎するこずは良いこずです。最初の堎合、怜蚌枈みのドラむバヌを削陀しようずするこずができたすむメヌゞからブヌトしたすが、2番目のむメヌゞでは䜕も圹に立ちたせん。

これらのテクノロゞヌは、Intel HaswellおよびAMD Trinityからサポヌトされおおり、それらに察する実際の攻撃はわかりたせんが、珟圚は2぀半の䌁業ノヌトブックモデルで䜿甚されおおり、ファヌムりェアずOSを倉曎する可胜性があるため、状況があたり倉わらないこずを望みたすデバむスを他の誰かず区別したす。

IntelおよびAMDから発行する蚱可を取埗した埌、次回、怜蚌枈みブヌトのバリ゚ヌションに぀いお特定のシステムをチェックする方法に぀いお説明したす。

最初のレベルの攻撃者はリラックスしお楜しむこずができたす-ハヌドりェア怜蚌に加えお、その埌の防埡はどれもそれらを防ぐこずができたせん。 だからこそ、私が話をしお、これからも蚀い続けたす。ファヌムりェアの真剣な研究者にずっお、プログラマヌずSOICクリップは必須です。



2.ハヌドりェアスむッチを備えた読み取り専甚ストレヌゞ
叀代のUEFI以前、倚くのマザヌボヌドには、偶発的たたは悪意のあるファヌムりェアからBIOSチップを保護するゞャンパヌがありたした。 そのような保護の実装に実質的に困難はありたせんでした。 すべおのBIOSセットアップの内容はCMOS SRAMに個別に保存され、ファヌムりェアを曎新する堎合を陀き、単に䜕も曞き蟌む必芁はありたせんでした。 その埌、Intelの誰かがCMOSに十分なスペヌスがないず刀断したため、チップをより迅速か぀迅速に取り、そこにすべおの蚭定を曞き蟌む必芁がありたすが、無駄に倱われるはずです。 この「邪悪な」゜リュヌションおよび同じレベルの倩才の䞀連の゜リュヌションの結果ずしお、すべおが1぀のチップにあるこずが刀明したした。実際にはUEFI、統合ネットワヌクカヌドのファヌムりェアの䞀郚 GbE 、ほずんどのチップセットファヌムりェア ME 、 ECファヌムりェア、および地獄は他のものを知っおいたす、およびチップの3人の所有者CPU、ME、およびGbEのそれぞれが、曎新時だけでなく、通垞はい぀でもそれに曞き蟌む暩利を受け取りたした。 発生した混乱を䜕らかの方法で合理化するために、Intelはチップの先頭にFlash Descriptorを远加したした。これにより、各地域ぞの3人の所有者のアクセス暩が明瀺的に芏定されたした蚘述子ず圢匏に぀いおは既に説明したしたが、これはあたり圹に立ちたせんでした。 フラむをカツレツずROからRWに分離する唯䞀の公匏サポヌト方法は、2぀のSPIチップをむンストヌルするこずです。1぀目はDescriptor、ME、GbE、NVRAMに、2぀目はUEFIの残りに、2぀目のチップの#WPレッグがゞャンパヌで着地し、保護したすその蚘録ハヌドりェアから。

このような保護にはいく぀かの問題がありたす。

-2個のチップは1個の2倍の䟡栌よりわずかに䜎く、賌入者は倧量生産で100䞇たたは2ドルを節玄したいので、2個のチップを搭茉したボヌドは日䞭芋぀けるこずができたせん。

-ファヌムりェアには物理アクセスが必芁です。 GPIOぞの#WP出力は、芜のすべおのセキュリティを砎壊したす。

-物理的にアクセスしなくおも、RWチップの内容を損なうこずがありたす。

残念ながら、UEFIを䜿甚したマスマヌケットシステムでのこのような保護の実装はただ芋おいたせん。 以前はありたしたが、珟圚はChromebookにのみ残っおいたすが、ファヌムりェアはcorebootに基づいおいたす。 ファヌムりェアに察するハヌドりェア保護がどのように実装されおいるかは、他のどこにも同じMEが存圚する堎合、正確にはわかりたせん...



3.チップセットのPRレゞスタ
SPIマむクロ回路を曞き蟌みから保護できない堎合は、チップセットで保護できたす。 すべおの最新のチップセットには、物理​​メモリブロックの読み取りおよび/たたは曞き蟌みから保護するために蚭蚈された少なくずも4぀のPRレゞスタがありたす。 SPIチップは垞に物理メモリの最初の4 GBの「ボトム」にマップされたす぀たり、SPIチップの最埌のバむトは垞に物理アドレス0xFFFFFFFFにありたすが、ファヌムりェアの党郚たたは䞀郚を保護できたす。

この皮の保護にも問題がないわけではありたせん。

-再起動時にレゞスタ倀もリセットされ、埩元する必芁があるこずを忘れずに、正しく実装する必芁がありたす。

-構成のロックをむンストヌルおよび再起動埌に埩元するこずを忘れないでください。そうしないず、悪意のあるコヌドが簡単にリセットできたす。

-保護を無効にするこずはできたせん。 再起動せずにOSからファヌムりェアを曎新するこずはできなくなりたす。

-そしお、もちろん、NVRAMおよびその他のRW゚リアはこの方法では保護できたせん。

前の段萜ずは異なり、海䞊垂堎でPR'amiを䜿甚するシステム、およびほずんどすべおの保護は、文盲たたは䞍完党で実装されおいたす。



4.1。 SMM_BWPおよびSpiRomProtect
再びIntelずAMDに察する同様の保護。それぞれ、SMMを陀き、どのプロセッサモヌドからでもSPIチップぞの曞き蟌みを蚱可したせん。 ファヌムりェアを曎新するには、特別なSMIプロセッサが䜿甚されたす。これは、新しいファヌムりェアの敎合性ず眲名の怜蚌を実行する必芁があり、怜蚌が成功した埌にのみファヌムりェアを実行したす。

この保護は実装が非垞に簡単であるため、ほずんどすべおのUEFIで䜿甚できたすが、デフォルトでは無効になっおいる堎合がありたす。 倧きなプラスは、ファヌムりェアコヌドがアヌキテクチャから独立しおいるこずです。

欠点もありたす

-SMMには倚くのコヌドがあり、そこに脆匱性があるず、ファヌムりェアに完党にアクセスできたす。

-フラッシャヌ自䜓の実装のバグから誰も安党ではありたせん。

-保護がNVRAMの倉数によっお制埡されおいる堎合これがそうであるシステムがたくさんありたす、UEFIシェルをロヌドできる攻撃者によっお単玔に無効にされる可胜性があるため、実質的に圹に立ちたせん。

䞊蚘の欠点を芋おから、Intelのスタッフはそれらを修正するこずを決めたした。IvyBridgeの呚蟺のどこかで、次の保護を思い付きたした。



4.2。 Intel BIOS Guard、旧PFAT
SMMにコヌドが倚すぎるず正しく刀断し、 IBVはそれらに穎がないようにフラッシャヌを曞き蟌むこずができないため、Intelはさらに深くするこずを決定し、別の特暩実行モヌド、特別なACRAMメモリ領域を远加したした。他のモヌドでは、IntelのEDSによっお眲名されたファヌムりェアのみをロヌドでき、SPIチップに蚘録できるのは圌のみです。 パラグラフ4.1の3぀の問題はすべお正垞に解決されたしたが、同時に、新しい問題も远加されたした。

-すべおがうんざりするほど耇雑。 独自のDSL䞊のスクリプト、くしゃみごずの眲名、個別のコンポヌネントの曎新、その他の地獄ずホンゞュラス。

-曎新甚のむメヌゞをプログラマヌにフラッシュするこずはできたせん。そのようなファヌムりェアを埩元するには、文字通り、断片から組み立おお、垞に宣誓する必芁がありたす。

-ベンダヌのロックむンはもちろんです。

䞀郚の勇敢なメヌカヌはPFATを䜿甚しおおり、それでも動䜜したすが、詊しおみたしたが、私は蚀うこずができたす-トリックなしで、私はSMMコヌドをこれよりも数回監査したいです。

私はPFATに察する攻撃に぀いお䜕も知りたせんが、ここでずらえどころのないJoeのルヌルはおそらく機胜したす。



5. BLEおよびBIOS_WE
むかしむかし、ただSMM_BWPがなく、プロセッサに1぀のコアがあった堎合、IntelのSPIチップぞの曞き蟌み保護は次のように線成されたした。チップセットが曞き蟌みコマンドを送信できるように蚭定する必芁があるBIOS_WEビットがありたす。 このビットはどのコヌドでも䜿甚できるため、その隣にBLEがありたす。 むンストヌルされおいる堎合、BIOS_WEむンストヌルはSMIを生成し、BIOSはこのSMIのハンドラヌを登録し、BIOS_WE自䜓をリセットしたす。 ゜フトりェアはビットがリセットされたこずを認識し、曞き蟌みの詊行を停止したす-保護はそれだけです、䞍可胜です。 SMMからフラッシュする堎合、BIOS_WEをむンストヌルするず、䞭断は発生せず既にSMMにいたす、瞫うこずができたす。

その結果、すべおの保護はBIOSがハンドラヌを远加し、SMIが生成されるずいう事実に基づいおいるため、攻撃が成功するために、忘れられたSmiLockビットはこのSMIの゜ヌスを無効にしお静かに䜕かを瞫うのに十分でした。 その埌、SmiLockは忘华を止め、䞀郚のIBVは、313Rafal WojtczukずCorey Kallenbergでマルチコアプロセッサ䞊でBLE / BIOS_WEメカニズムが競合状態に察しお脆匱であるこずを瀺すたで、保護が信頌できるず確信しおいたした。 攻撃の所芁時間は10分未満で、垞に成功したす。

それにも関わらず、BLEによっおのみか぀排他的に保護されおいるシステムは、䟝然ずしお存圚したす。 これは悲しいです。



6.行方䞍明
「誰もいないパむ」の教科曞の䟋。 デスクトップマザヌボヌドの䞀郚のメヌカヌは、指先を指さず、ファヌムりェアが䞊曞きされないように保護しおいたせん。 お䜿いのシステム-わずらわしいこずですが、セキュリティのような錯芚はしたせん。裞のBIOSのみ、ハヌドコアのみです。 このように毎日行動するこずは、䞀方ではIntelが掚奚事項を抌し぀ぶし、他方ではMicrosoftがHSTIを䜿甚しおいるため、より困難になっおいたすが、これたでのずころ、圌らは察凊しおいたす。 勇気の狂気、そしおすべお。



おわりに



ファヌムりェアに察する保護に぀いおは倚かれ少なかれ理解したした。次のパヌトでは、SMMずその攻撃に぀いお説明したす。

ご質問やご意芋をお埅ちしおおりたす。 ご枅聎ありがずうございたした。



All Articles