通常、コンピュータのSMMには多くの機密データが保存されています。他のデータと同様に、さまざまな原因で突然失われたり損傷したりすることがあります。そのため、この記事ではSMMモードからデータを復元する可能性と手順を分析します。ディスクの問題に直面した際は、MiniToolに助けを求めることをお勧めします。
新たなSpectre攻撃のバリエーションにより、攻撃者がSMMモードからデータを復元可能に
新たなSpectre攻撃のバリエーションは、Eclypsiumの専門家と研究者たちによって1年前に設計されました。この新しい推測実行攻撃の手法は、ハードウェアベースのメモリ保護を回避することができるため、攻撃者がCPUのシステム管理モードに保存されたデータにアクセスし、回復することを可能にします。
2017年にさかのぼると、GoogleのProject ZeroのJann Hornと他のセキュリティ研究者たちが、現代のプロセッサアーキテクチャにおける推測実行プロセスに影響を与える脆弱性を初めて発見しました。
公開されたProof-of-conceptコードが変更された
ご存知のように、公開されたProof-of-conceptコードはSpectre variant 1(CVE-2017-5753)脆弱性のために設計・公開されました。以前の研究で、そのコードのうちの1つがEclypsiumチームによって変更されたと報告されています。
公開されたProof-of-conceptコードを変更する目的は何ですか?
- SMRR保護メカニズムを取り除くため。
- System Management RAM(SMRAM)に保存されている内容にアクセスするため。
ご注意ください:SMRAMは、SMMによって作業データが保存・実行される物理メモリを指します。
SMMコードとデータが公開される
SMMは通常、オペレーティングシステムから隔離されたメモリを含む物理メモリへの特権アクセスを持っているため、私たちの研究は、Spectreベースの攻撃がメモリ内の他の秘密(例えば、ハイパーバイザー、オペレーティングシステム、またはアプリケーション)を暴露できることを示しています。– Eclypsiumチームの発言
これらの強化されたSpectre攻撃により、特権のない攻撃者がメモリの内容を読み取ることができるようになり、SMMメモリのように範囲レジスタによって保護されるべきメモリも含まれます。これにより、機密として意図されていたSMMコードおよびデータが公開され、他のSMMの脆弱性やSMMに保存された秘密が明らかになる可能性があります。– 研究者たちの発言
カーネルレベルのPoCエクスプロイトは、物理メモリ、IO、PCI、MMIOなどのさまざまなハードウェアインターフェイスへのアクセスを提供し、攻撃者にシステムハードウェアのより良い制御を可能にします。また、ソフトウェアSMIなど、より高い特権レベルのインターフェイスへのアクセスも提供します。– 研究者たちが説明した
さらに、研究者たちは将来のテストを拡大するためにPoCエクスプロイトをCHIPSECに統合すると述べました。
強化されたSpectre攻撃により、範囲レジスタによって保護されると想定されるSMMメモリを含むメモリの内容に、特権のない攻撃者でさえアクセスできるようになります。このようにして、極秘のSMMコードおよびデータが露呈することになります。その結果、関連するSMMの脆弱性やこの領域に保存されている秘密も漏洩します。
総じて、Spectre variant 1(CVE-2017-5753)脆弱性のために設計された公開されたProof-of-conceptコードのうちの1つを変更したことが、SMRAMおよびSMMデータの発見に寄与しました。そしてEclypsiumチームによれば、これは将来的に物理メモリからより多くのデータ(SMM関連データだけでなく)を発見するために使用される可能性があります。
内部メモリからデータを復元する方法
Eclypsiumの研究者たちは、SMMモードからデータを復元する方法を説明しました。このセクションでは、システムクラッシュ時にPCの内部ストレージからファイルを復元する方法を紹介します。
ステップ1:ブータブルディスク(CD/DVD/USBフラッシュドライブ)を作成します。
- 正常に動作するコンピュータで、MiniTool Power Data Recovery無料版をダウンロードします。
MiniTool Power Data Recovery Freeクリックしてダウンロード100%クリーン&セーフ
- 「ユーティリティ」タブに移動し、「ダウンロード」ボタンをクリックして、MiniTool Power Data Recovery起動版を入手します。
- ライセンスを取得して登録します。
- USBメモリを接続するか、CD/DVDをコンピュータに挿入します。
- 右上の「MiniTool Power Data Recovery起動版」ボタンをクリックします。
- 「MiniToolプラグインを搭載したWinPEベースのメディア」を選択します。
- メディアの場所(ISOファイル、USBフラッシュディスク、またはCD/DVDライター)を選びます。
- ポップアップウィンドウで「はい」をクリックして確認し、ディスク作成プロセスが完了するのを待ちます。
- 「完了」をクリックし、ブータブルディスクをコンピュータから取り外す/切断します。

ステップ2:BIOSでブート順序を変更します。
- ブータブルディスクを問題が発生したデバイスに接続し、再起動します。
- F10、F2、F12、F1、DEL、または他のボタンを押してBIOSにアクセスします。
- キーボードの矢印キーを使って「Boot」タブを選択します(機能名は異なる場合がありますが、その機能はブート順序の管理です)。
- 矢印キーを使ってブータブルディスクを最初のブートデバイスとして設定します。
- 変更を保存してBIOSを終了します。
ステップ3:内部ドライブをスキャンしてファイルを復元します。
- 画面の指示に従って、MiniTool PE Loaderウィンドウに入ります。
- PCが起動しない場合は、最初のオプションを選択してMiniTool Power Data Recoveryを起動します。
- メイン画面から「論理ドライブ」または「ディバス」を選択し、対象の場所を選択して「スキャン」をクリックします。
- ディスクスキャンが完了するまで待ち、見つかったデータを慎重に確認します。
- 必要なファイルを見つけた場合は、それらを選択して「保存」をクリックします。
- ファイルを保存するディレクトリを選択します。外部デバイスを選択してください(このステップの前に、十分な空き容量があるリムーバブルドライブをコンピュータに接続しておく必要があります)。
- 「OK」ボタンをクリックして選択を確認し、復元が完了するのを待ちます。

ご注意ください:復元が完了したら、ソフトウェアに「回復完了」のプロンプトウィンドウが表示されます。「回復されたファイルをビュー」をクリックすると、ファイルを確認できます。その後、起動できないコンピュータを修復するための有効な解決策を試してください。
コンピュータにおけるSMMとは?
SMMの正式名称はSystem Management Mode(システム管理モード)で、保護リングを指す「リング-2」とも呼ばれます。SMMは、1990年代初頭にIntel 386SLで初めて導入されました。正確には、SMMはx86中央処理装置の動作モードの一つです。SMMはコンピュータ上の非常に重要かつ機密性の高い領域で、CPU(Central Processing Unit/中央処理装置)によって強力に保護されています。
SMMがコードを受け取ると、オペレーティングシステムは一時的に停止します。その間に、UEFI/BIOSファームウェアによってさまざまなコマンドが実行され、十分な特権を得て、ハードウェアとデータへのアクセスが可能になります。
中断中に何が起こりますか?
- オペレーティングシステムは一時的に停止します。
- ファームウェア固有のコードが実行されます。
- システムハードウェアの制御、電力管理、そして独自のOEMコードが制御されます。
要するに、ハードウェアは円滑に動作し、すべてのソフトウェアが正常に実行されます。
SMMはファームウェアやハードウェア支援型デバッガに含まれ、代替ソフトウェアシステムとして機能します。SMMにアクセスして実行するには、高い特権を取得する必要があります。
SMMは非常に重要であり、メンテナンスやセキュリティ上の理由から、誰もアクセスすることは許されていません。
SMMの特徴
System Management Mode(SMM)には、主に次の3つの特性があります:
- 実際には16ビットモード(x86プロセッサモード)であり、最も高い特権を持つソフトウェアからもアクセスや割り込みができません。
- マザーボードの制御や電力管理(例:ノートパソコンにおける熱管理や省電力管理)に使用されます。これはACPIとしても知られています。
- コンピュータのCPUがハードウェアのシステム管理割り込み(SMI)を受信したときにのみアクセス可能です。
SMMメモリ:
各CPUレジスタは、SMRAMと呼ばれるメモリゾーンに位置する、メモリ保存状態マップに保存されます。では、SMRAMはどこにあるのでしょうか? 実際には、それはコンピュータのRAMに含まれています。SMRAMの機能とは何でしょうか?それはSMIハンドラを実行できることです。
SMIハンドラによってrsmアセンブリ命令が実行されるとき、CPUの状態はメモリに保存されたマップから復元されます。PCのSMM上で動作する管理ソフトウェアによってオペレーティングシステムが中断されても、通知は一切ないことを理解しておくべきです。
SMRAMセキュリティモデルとメカニズム
SMMコードは、(オペレーティングシステムのカーネルよりも高い)完全な特権を持つプラットフォーム上でのみ実行できます。
SMRAMは常にアクセスする必要がありますか?
もちろん違います。SMRAMは、システムがSMM内にあるときにアクセスされるべきです。それ以外の場合にはアクセスを防ぐ必要があり、SMIハンドラだけがその内容を変更できるようにします。
要約すると、重要な点はチップセット内でD_OPENビットが設定されているかどうかです。
- もし設定されていれば、SMRAMにアクセスできます。
- そうでなければ、レガシー、TSEG、およびハイSMRAMは、CPUがシステム管理モードにあるときにのみアクセス可能です。
では、保護メカニズムはどうでしょうか?
実際には、D_LCKビットがSMIハンドラの改変を防ぐ主なメカニズムとして使われます。D_LCKビットが設定されると、SMRAMの構成ビット(D_OPENビットを含む)は読み取り専用状態になります。構成ビットがどこにあるのかと聞かれれば、それらはチップセット内にあります。
SMMモードの保護方法
Eclypsiumチームの研究者によると、彼らは2018年3月に発見した新たなSpectre攻撃のバリエーションをIntelに送信しました。そして、この問題に対するIntelの対応は、Spectreバリアント1およびバリアント2の元のパッチを取得することでした。彼らは、これで攻撃チェーンを阻止するには十分だと述べています。
Eclypsiumの研究を精査し、彼らのブログで述べられているように、バリアント1およびバリアント2を緩和するための既存のガイダンスが、これらのシナリオの緩和にも同様に効果的であると信じています。私たちは研究コミュニティとのパートナーシップを重視しており、この分野におけるEclypsiumの取り組みに感謝しています。– Intelの広報担当者
実際、Eclypsiumからの報告では、この攻撃についてさらに深く議論されています。
Eclypsiumチームの今後の研究
Eclypsiumチームによると、PoCはSMRR(System Management Range Registers)に対してのみテストされています。しかし、他のハードウェアベースのレンジレジスタ保護メカニズムによっても、同様の攻撃がメモリに対して有効になる可能性があります。
SMMセキュリティ緩和:
2018年3月、IntelはSpectreバリアント1に対応するため、同じソフトウェアガイダンスをSMMに統合するよう助言しました。その結果、Spectreバリアント1はLFENCE命令を使用して緩和されるべきです。異なるシステムメーカーや独立系BIOSベンダーから提供されるファームウェアに関しても、これは適用可能です。
さらに、ベンダーによって他のSpectre攻撃に対する緩和策も導入されています。
システム管理割り込み(SMI)前に実行されたソフトウェアは、SMI後にシステム管理モード(SMM)で実行される間接分岐の予測対象を制御できません。– Intelの「Speculative Execution Side Channel Mitigations」文書による
もう一つの有効な戦略は、ファームウェアを使用してSMMのメモリアクセスを制限することです。ほとんどのファームウェアでは、物理メモリをSMMのページテーブルにマッピングします。最新バージョンのTianocoreは例外であり、必要なメモリ部分のみをページテーブルにマッピングします。したがって、影響は大きく減少します。実際には、現在のシステムのほとんどは、古いバージョンのTianocoreを基に構築されています。そのため、ファームウェア開発者はこの機能を今後のバージョンにも維持すべきです。これは、現在およびその他のSMM脆弱性からユーザーを保護するために重要です。
結語
上記の内容を読んだ後、システム管理モード(SMM)がコンピュータ上で非常に重要なユニットであることがわかるでしょう。それは、一般ユーザーが利用できることを想定していない多くの機密情報を保存しています。しかし、研究者たちは新たなSpectre攻撃のバリエーションがSMMへのアクセスを可能にし、セキュリティ上の問題を引き起こすことを発見しました。本記事では、SMMモードからデータを復元する方法と、SMMメモリを効果的に保護する方法について説明しました。