Black Hat専門的なハードウェアで今も使われており、「軍事レベルのセキュリティ機能」を謳われている、忘れ去られた x86 互換プロセッサ ファミリには、マルウェアや不正ユーザーがシステムを完全に乗っ取るために悪用できるバックドアがあります。
この脆弱性は、2000年代前半から中頃に市場に登場した Via Technologies の C3 プロセッサのシリコンに組み込まれている。
具体的には、チップレベルのバックドアが起動されると、ソフトウェアはコンピューターのハードウェアを完全に制御する隠されたコプロセッサに命令を送ることができます。このアクセスは、通常のプログラムやログインユーザーによって悪用され、オペレーティングシステムカーネルのメモリを改ざんしたり、ルート権限(管理者権限)を取得したり、その他の悪質な行為を行ったりする可能性があります。
この半導体史における奇妙で素晴らしい一片は、米国オハイオ州立大学の非常勤講師であるクリストファー・ドーマス氏によって発見されました。同氏は木曜日、ラスベガスで開催されたセキュリティカンファレンス「Black Hat USA 2018」でその発見を発表しました。同氏はGitHubリポジトリでさらに詳細な情報を提供しており、このリポジトリにはバックドアが発見された場合に検出・閉鎖するためのコードも含まれています。
Domas氏によると、「このバックドアにより、リング3(ユーザーランド)のコードがプロセッサの保護を回避し、リング0(カーネル)のデータを自由に読み書きできるようになります。バックドアは通常は無効化されていますが(有効化するにはリング0の実行が必要です)、一部のシステムではデフォルトで有効化されていることが判明しています。」
以下は、Linux 風の脆弱なマシン上で、コプロセッサにカーネル メモリを変更させ、プログラムの権限をルートに昇格させるための特別な命令シーケンスを実行するエクスプロイトのデモンストレーションです。
神モードが解除されました: 一部の x86 CPU にハードウェアバックドアが存在します https://t.co/Ph0IAL0Pyw
— ドマス (@xoreaxeaxeax) 2018年8月9日
ホワイトペーパーは明日公開予定です。@BlackHatEvents pic.twitter.com/qhZ1vFI7pL
バックドアが有効化されている場合、x86 CPU は特定の2バイトを検出すると、レジスタで指定された非x86命令のペイロードをeax
コプロセッサに渡して実行させます。このコードはカーネルメモリにアクセスし、実行中のプログラムのアクセス権をスーパーユーザー権限にアップグレードします。
ドーマス氏はこのバックドアを「Rosenbridge」というコードネームで呼び、このコプロセッサを、プロセッサパッケージ内のx86コアと並んで組み込まれた、x86ではないRISCライクなCPUコアだと説明した。彼は、このコプロセッサがIntelのマネジメントエンジンなど、脆弱性が特定されている他のコプロセッサと区別し、より深く組み込まれている点を指摘した。CPUのメインメモリだけでなく、レジスタファイルや実行パイプラインにもアクセスできるとドーマス氏は述べた。
理論上、バックドアへのアクセスにはカーネルレベルの権限が必要となるが、Domas 氏によると、一部のシステムではデフォルトで利用可能であり、ユーザーランドのコードがこの機能を利用してオペレーティングシステムを改ざんできる可能性があるという。
インテルは16年間も自社のチップに興味深いセキュリティ欠陥を放置していた。その悪用方法とは?
続きを読む
「バックドア」という言葉が適切かどうかは、必ずしも誰もが同意するわけではない。ドイツを拠点とする電気技師のティロ・シューマン氏は、ツイートの中で、例外アクセスはVia C3の文書化された機能であり、非x86ソフトウェア命令をx86コードと並行して実行できるようにするものだと主張した。言い換えれば、これはx86コアの命令セットをボーナス命令で拡張し、コプロセッサによって実行されるというものだ。
C3 Nehemiahのデータシートによると、C3の機能制御レジスタ(FCR)のビット0を設定することで、代替命令セットを有効にすることができます。デフォルト設定ではx86命令セットが使用され、ビットを1に設定すると代替命令セット(ALTINST)が有効になります。
「この代替命令セットには、整数、MMX、浮動小数点、3DNow!命令の拡張セットに加え、x86命令アーキテクチャよりも強力な追加レジスタといくつかの命令形式が含まれています」とデータシートには説明されています。「例えば、この代替命令セットでは、特権機能をどの保護レベルからでも使用でき、メモリ記述子のチェックをバイパスでき、アライメントチェックなどの多くのx86例外をバイパスできます。」
データシートには、これはテスト、デバッグ、および特殊なアプリケーション向けであると記載されています。コプロセッサの命令セットは公開されていないため、アクセスが必要なお客様はVia社に問い合わせるようアドバイスされています。そのため、隠しCPUを自分で有効化することは可能ですが、コードの作成にはサポートが必要になります。また、有効化するとプログラムがx86コアのセキュリティメカニズムをバイパスできるようになるため、汎用システムには適していません。
Domas 氏が説明したアクセス手法は、2003 年に製造された Via C3 Nehemiah チップで機能します。C3 シリーズは、産業用ハードウェア、医療機器、ATM、販売端末などを対象としていましたが、一部の消費者向けデスクトップ コンピューターやモバイル コンピューターにも搭載されていました。
しかし、データシートには、特別なアクセスは Nehemiah ファミリだけでなく、すべての C3 プロセッサで利用可能であると記載されています。
「すべての VIA C3 プロセッサにはこの代替命令機能が含まれていますが、呼び出しの詳細 (例: 0x8D8400 の「プレフィックス」) はプロセッサ間で異なる場合があります」とドキュメントでは説明されています。
ドーマス氏は、15年前のチップの後継世代にはバックドアが存在しないことを指摘し、自身の研究結果の影響を軽視した。彼は、この研究は主に研究者の関心を引くものだと考えている。しかし、15年前のC3チップを搭載した現金自動預け払い機がどこにあるのかをたまたま知っている人にとっては、この欠陥は学術的な関心以上の価値があるかもしれない。
台湾に拠点を置くチップ設計会社であるVia Technologiesは、コメントの要請に応じなかった。®