HN 日本語サマリー

← 一覧へ戻る
セキュリティ

一部のx86 CPUにおけるハードウェアバックドア

Hardware backdoors in some x86 CPUs (github.com)

349 pointsby epestr94 コメント

要約

rosenbridgeプロジェクトは、一部のx86プロセッサ(特にVIA C3 CPU)に存在するハードウェアバックドアを発見しました。このバックドアは、ユーザーランドのコードがカーネルデータを自由に読み書きすることを可能にし、本来はカーネルレベルのアクセスが必要ですが、一部システムではデフォルトで有効になっていることが確認されています。この研究は、プロセッサの複雑化に伴うバックドアの可能性を示唆し、その検出と修正のためのツールを提供しています。

全文翻訳

プロジェクト:rosenbridge : 一部のx86 CPUにおけるハードウェアバックドア github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax 概要 プロジェクト:rosenbridge は、一部のデスクトップ、ラップトップ、および組み込みx86プロセッサにハードウェアバックドアが存在することを明らかにしました。このバックドアにより、リング3(ユーザーランド)のコードはプロセッサの保護機能を回避し、リング0(カーネル)のデータを自由に読み書きできます。バックドアは通常無効化されていますが(有効にするにはリング0の実行が必要)、一部のシステムではデフォルトで有効になっていることが判明しました。このリポジトリには、お使いのプロセッサが影響を受けているかを確認するユーティリティ、バックドアが存在する場合にそれを閉じる方法、およびバックドアの発見と分析に使用された研究とツールが含まれています。 バックドア rosenbridgeバックドアは、CPU内のメインx86コアの隣に埋め込まれた、小さく非x86コアです。モデル固有レジスタ(MSR)の制御ビットによって有効化され、その後ローンチ命令で切り替えられます。埋め込まれたコアには、特別にフォーマットされたx86命令にラップされたコマンドが供給されます。コアはこれらのコマンド(「ディープ埋め込み命令セット」と呼ぶ)を実行し、すべてのメモリ保護と特権チェックをバイパスします。バックドアの有効化にはカーネルレベルのアクセスが必要ですが、一部のシステムではデフォルトで有効になっており、権限のないコードでもカーネルを変更できることが確認されています。rosenbridgeバックドアは、Management EngineやPlatform Security Processorのような、x86 CPUで公に知られている他のコプロセッサとは全く異なります。これは既知のコプロセッサよりも深く埋め込まれており、CPUの全メモリだけでなく、レジスタファイルや実行パイプラインにもアクセスできます。 影響を受けるシステム この問題の影響を受けるのはVIA C3 CPUのみと考えられています。Cシリーズプロセッサは、産業用オートメーション、POS(Point of Sale)、ATM、ヘルスケアハードウェア、および様々なコンシューマー向けデスクトップおよびラップトップコンピュータ向けに販売されていました。 今後の展望 この脆弱性の範囲は限定的です。C3以降の世代のCPUにはこの機能は含まれていません。この研究は、ますます複雑化するプロセッサにバックドアがどのように発生しうるか、そして研究者やエンドユーザーがそのような機能をどのように特定できるかを示すケーススタディおよび思考実験として公開されています。ここで提供されるツールと研究は、より深いプロセッサ脆弱性研究の出発点となります。 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) による研究活動です。