アップデートされたセキュリティ研究者たちは、Intelのソフトウェア・ガード・エクステンション(SGX)がその名にふさわしい機能を果たしていないことを発見しました。実際、SGXは、通常のアプリケーションを装ったマルウェアを巧妙に隠蔽するために利用される可能性があるとされています。
SGX は、他のソフトウェアからの監視や干渉なしにコードを実行できる安全な領域を作成するためのプロセッサ命令と機能のセットです。オペレーティング システムやハイパーバイザーも参照できません。金融取引の処理、保護されたハリウッド映画の著作権侵害対策の復号化、および同様の暗号化を詮索好きな目からプライベートに実行することを目的としています。
それが理論上の話だ。しかし、昨年Spectre-Meltdownプロセッサの脆弱性の発見に貢献した科学者たちは、古くからあるROP(Return-Oriented Programming)という手法を活用することで、セキュリティ防御の一部を突破したと考えている。
リターン指向プログラミング(ROP)は、スレッドのスタックを上書きすることで、アプリケーションを通常通り動作させるのではなく、悪意のある操作を実行させる手法です。これは、ガジェットと呼ばれる無関係なメモリ常駐命令の塊をつなぎ合わせてソフトウェアの動作を操作することで実現されます。これは、車のトランク(英国の読者にとってはトランク)にあるタイヤレバーを使って誰かをカージャックするようなものです。
スタック内の戻りアドレスを変更して、ルーチンの後のコードが本来あるべき場所に戻らないようにし、他のコードの小さなセクションにジャンプし、さらに別のセクション、さらに別のセクションにジャンプするようにします。こうして、データのリークや変更など、プログラムに本来あるべき以外のことを行うように指示する命令のパッチワークが構築されます。
オーストリアのグラーツ工科大学の研究者たちは、火曜日に発表予定の論文「Intel SGX を使用した実用的なエンクレーブ マルウェア」の中で、SGX と ROP を介して、ASLR などのさまざまなセキュリティ技術を回避し、情報を盗んだりサービス拒否攻撃を実行したりできる任意のコードを実行する手法について説明しています。
概要: エクスプロイトを取得して暗号化し、SGX エンクレーブに配置し、リモート トリガー信号の後にのみ復号化し、ホスト アプリで ROP チェーンを介してエクスプロイトを実行し、ROP の痕跡を直ちに削除して通常のホスト実行を続行し、他の被害者に対してこれを繰り返します。
— ダニエル・グルース (@lavados) 2019 年 2 月 12 日
エンクレーブは割り当てられたホスト アプリケーションを介して外部の世界と通信する必要がありますが、チームの SGX-ROP アプローチでは、エンクレーブ コードが ROP を使用してホスト プロセスをハイジャックし、基盤となるシステムに干渉することができます。
事実上、エンクレーブ内のマルウェアは、アンチウイルスソフトウェアなどのセキュリティ対策ソフトの目に触れず、目に見えない状態にあります。しかし、起動されると、乗っ取ったホストを介して周囲の環境に好きなように操作できる可能性があります。これはまた、エンクレーブが脆弱性エクスプロイトコードを暗号化し、攻撃の合図を受け取った際に必要に応じて非公開で復号・実行することで、そのコードを秘密に保つことができることを意味します。
「SGXはユーザーを危害から守るどころか、現在、セキュリティ上の脅威をもたらし、攻撃を仕掛ける準備が整ったいわゆるスーパーマルウェアを促進していることを我々は実証した」と共著者のマイケル・シュワルツ、サミュエル・ワイザー、ダニエル・グルスは論文の中で説明している。
スペクターがインテルのSGX防御を脅かす:CPUの欠陥を悪用してエンクレーブをスヌーピングできる
続きを読む
3人によると、セキュリティ専門家はエンクレーブを介した攻撃を軽視する傾向がある。これは、これらのロックダウンされたコード空間が通常のシステムプロセスよりも制約が厳しいためだ。エンクレーブは、ホストアプリケーションを介してオペレーティングシステムとやり取りするためのシステムコールを発行することしかできず、I/O操作を直接処理することはできない。そのため、エンクレーブ内の不正なコードが外部に漏れるのを防ぐことができるはずだ。
それでもなお、Grazグループは、Intelのエンクレーブ起動プロセスを回避し、署名鍵を取得する現実的な方法を発見しました。特にSGXv2では、エンクレーブ署名の仲介役としてIntelを排除する方法が提供されているため、その可能性はさらに高まります。つまり、悪意のあるエンクレーブは、システムコールやホストアプリケーションのメモリ情報といった制限を回避し、ROPを用いて任意のコードをホストプロセスとして実行し、シューボックス内に閉じ込められることなくコンピュータ内を自由に動き回ることができるのです。
確かに、これは従来の Windows 権限昇格攻撃と比較すると複雑な手法ですが、魅力的なアプローチでもあります。
「エンクレーブはローカルで実行する必要があるが、私たちが説明するシナリオでは、エクスプロイトを実行するトリガー信号は遠隔地の敵から来る」とグラス氏はThe Registerへの電子メールで述べた。
「つまり、エンクレーブ経由ですべてのデバイスにエクスプロイト(おそらく非常に高価なゼロデイエクスプロイト)を展開すれば、誰にも気づかれません。そして、好きな時に好きな相手にトリガー信号を送信し、エクスプロイトを実行できます。」
「しかし、リモートから攻撃可能なバグを持つエンクレーブである可能性もあります」とグラス氏は付け加えた。「その場合も結果は同じです。エンクレーブ内での任意のコード実行は、デバイス上で追跡不可能な任意のコード実行を意味します。そうなると、攻撃者は何でもできるようになります。」
攻撃者はリソースをTAPする
この攻撃は、最新のIntelプロセッサに搭載されているTransactional Synchronization eXtensions(TSX)と、TSXベースのアドレスプロービング(TAP)と呼ばれる新しい手法を組み合わせて利用しています。研究者によると、TAPはTSXを用いて、仮想アドレスが現在のプロセスからアクセス可能かどうかを判定します。このメモリ探索は、セキュアエンクレーブの設計方法に則っているため、オペレーティングシステムからは見えません。
「私たちはかなり前からTSXに取り組んできました」とグルス氏は述べた。「TSXには興味深い特性がいくつかあり、ここ数年でそれらを悪用してきました。プロセッサがTSXをサポートしていれば(多くのプロセッサはTSXをサポートしていませんが)、特別な準備も必要なく、そのまま攻撃を実行できます。」
彼は、TSX プリミティブは、挿入されたシェル コードのアドレス空間をスキャンするための「エッグ ハンター」として使用できるため、SGX とは関係のないコンテキストでも興味深いと付け加えました (TSX をサポートするシステム内)。
TAPの目的は、メモリ内に存在するコード(コードガジェット)を見つけ出し、それらを連鎖させてROP型のコード再利用攻撃を実行することです。しかし、SGX-ROP攻撃を実行するには、攻撃者は偽のスタックフレームと攻撃ペイロードを保存するために、書き込み可能なホストメモリにアクセスする必要があります。セキュアエンクレーブはホストアプリケーションメモリを割り当てることができないため、TAPはアクセス可能なメモリを特定するために利用されます。
ボフィン氏、スペクター・メルトダウン級のプロセッサ欠陥やその他のセキュリティホールへの対策としてトラピスト修道士のアプローチを提案:公に何も言わず、口を閉ざす
続きを読む
これを実現するために、研究者らは耐障害性のある書き込みプリミティブ「Checking Located Addresses for Writability (CLAW)」を開発しました。メモリページが書き込み可能かどうかを判断するために、CLAWは対象ページへの書き込み命令をTSXトランザクションにラップし、書き込み後にトランザクションを中止します。その後、トランザクションの戻り値からページの書き込み可能性を推測できます。
「SGX-ROP を使用すると、ASLR、スタック カナリア、アドレス サニタイザーを回避して、ホスト コンテキストで ROP ガジェットを実行し、実用的なエンクレーブ マルウェアを実現できます」と研究者らは主張し、エクスプロイト プロセス全体が約 20 秒で完了する可能性があると指摘しています。
グラス氏は、彼と同僚はSGXの改良にサンドボックス化などの技術を検討していると述べた。しかし、スペクターやメルトダウンの修正と同様に、その代償としてプロセッサ速度が低下する可能性がある。
「私たちは緩和策に取り組んでいます。その緩和策の中には、コモディティシステム上のセキュリティと引き換えにパフォーマンスを向上させるものもあれば、ハードウェアの変更は必要だがパフォーマンスに影響しないものもある」と同氏は述べた。
The Registerは、Intelに対し、論文発表前に研究者らの研究内容を把握していたかどうかを尋ねました。Intelの広報担当者はすぐには回答しませんでしたが、同社から追加情報があればお知らせします。®
追加更新
Intelの広報担当者はThe Registerにメールで送られた声明の中で次のように述べた。