
x86 CPUのハードウェアバックドア
: x86 CPUのハードウェアバックドア
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
project:rosenbridgeは、一部のデスクトップ、ラップトップ、組み込みx86プロセッサにおけるハードウェアバックドアを明らかにします。
このバックドアにより、リング3(ユーザーランド)のコードがプロセッサの保護を回避し、リング0(カーネル)のデータを自由に読み書きできるようになります。バックドアは通常は無効(有効化にはリング0の実行が必要)ですが、一部のシステムではデフォルトで有効になっていることが判明しています。
このリポジトリには、プロセッサが影響を受けているかどうかを確認するユーティリティ、存在する場合にバックドアを閉じるツール、およびバックドアの発見と分析に使用された研究とツールが含まれています。
rosenbridgeバックドアは、CPU内のメインのx86コアと一緒に埋め込まれた、小型の非x86コアです。モデル固有レジスタの制御ビットによって有効化され、その後起動命令で切り替えられます。埋め込まれたコアには、特別にフォーマットされたx86命令にラップされたコマンドが送られます。コアはこれらのコマンド(「深く埋め込まれた命令セット」と呼びます)を実行し、すべてのメモリ保護と特権チェックをバイパスします。
バックドアの有効化にはカーネルレベルのアクセスが必要とされるべきですが、一部のシステムではデフォルトで有効になっていることが確認されており、特権のないコードがカーネルを変更できる可能性があります。
rosenbridgeバックドアは、Management EngineやPlatform Security Processorなど、x86 CPU上で公に知られている他のコプロセッサとは完全に異なります。既知のどのコプロセッサよりも深く埋め込まれており、CPUの全メモリだけでなく、レジスタファイルや実行パイプラインにもアクセスできます。
この問題の影響を受けるのはVIA C3 CPUのみと考えられています。Cシリーズプロセッサは、産業オートメーション、POS、ATM、ヘルスケアハードウェア、およびさまざまなコンシューマ向けデスクトップ・ラップトップコンピュータ向けに販売されています。
この脆弱性の範囲は限定的です。C3より後の世代のCPUにはこの機能は含まれていません。
この研究はケーススタディおよび思考実験として公開されており、ますます複雑化するプロセッサにバックドアがどのように発生する可能性があるか、また研究者やエンドユーザーがそのような機能をどのように特定できるかを示しています。ここで提供されるツールと研究は、さらに深いプロセッサの脆弱性研究の出発点となります。
お使いのCPUが影響を受けているかどうかを確認するには:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
提供されるユーティリティはベアメタル(仮想マシン内ではなく)で実行する必要があり、アルファ状態です。バックドアを含まないシステムでは、クラッシュ、パニック、またはハングアップする可能性があります。
ここで提供されるユーティリティは特定のプロセッサファミリとコア向けに設計されています。残念ながら、バックドアが研究された形態から少しでも変更されている場合、ツールはバックドアを見逃します。
一部のシステムではバックドアがデフォルトで有効になっており、特権のないコードが許可なくカーネルレベルのアクセスを得ることができます。「CPUの確認」の手順でCPUが脆弱であると示された場合は、ブートプロセスの早期にバックドアを閉じるスクリプトをインストールできます:
cd fix
make
sudo make install
reboot
ただし、これを行っても、カーネルレベルのアクセスを持つ攻撃者はバックドアを再び有効にできます。このスクリプトはブートプロセス中に問題を修正するための概要として提供されていますが、異なるシステムに適応させる必要があります。
この研究では、未知の命令を発見するためにsandsifterユーティリティを広範囲に使用しています。
asm
深く埋め込まれた命令セット(DEIS)のアセンブラ。カスタムのrosenbridgeアセンブリで書かれたプログラムをx86命令に変換します。これらの命令は起動命令の後に実行されると、隠されたCPUコアにコマンドを送信します。
esc
rosenbridgeバックドアを使用した特権昇格の概念実証。
fix
影響を受けるシステムで脆弱性を閉じるための大まかな概要。モデル固有レジスタの更新によって可能な範囲で対処します。
fuzz
x86コアとrosenbridgeコアの両方をファズし、未知の起動命令とブリッジ命令を特定し、rosenbridgeコアの命令フォーマットを解明するために使用されるユーティリティのコレクション。
deis
隠されたCPUコアの効果と機能を探索するために使用されるファザー。
exit
一部のプロセッサでは、DEISシーケンスの最後にx86コアに戻るための終了シーケンスが必要と考えられています。このディレクトリには研究の初期段階で終了シーケンスを検索するために使用されたユーティリティが含まれていますが、そのようなシーケンスを必要としないプロセッサが見つかったため放棄されました。
manager
ワーカーのネットワーク全体に分散されたファジングタスクを監視および管理するために設計されたPythonユーティリティのコレクション。
wrap
sandsifterファザーの簡略版。x86コアから隠されたrosenbridgeコアにコマンドを送信するブリッジ命令を特定するために使用されます。
kern
ファズされたDEIS命令によって引き起こされた変更について、カーネルメモリとレジスタを監視するために使用されるヘルパーユーティリティのコレクション。
lock
rosenbridgeバックドアをロックまたはアンロックするユーティリティ。
proc
ファジングログからパターンを特定し、DEIS命令の動作のクラスを識別するためのツール。
test
研究の初期に使用されたツール。既知のRISC命令を実行することで隠されたコアのアーキテクチャを特定しようと試みます。
util
プロセッサがrosenbridgeの影響を受けているかどうかを検出するアルファ状態のツール。
(TODO: ホワイトペーパーへのリンク)
(TODO: スライドへのリンク)
この研究で提示された詳細と含意は、記載された研究から導き出された著者の推測と意見です。研究は、記載されたCPU上の認識されたセキュリティ脆弱性を特定し修正するという目的で実施・提供されています。VIAプロセッサは低消費電力と組み込み設計における優れた性能で有名です。ここで説明された機能は、組み込み市場向けの有用な機能として誠意を持って作成され、初期のプロセッサ世代で意図せず有効のまま残されたものであると信じています。悪意のある意図は含まれていません。
project:rosenbridgeはChristopher Domas(@xoreaxeaxeax)による研究プロジェクトです。