[論文レビュー] SMoTherSpectre: exploiting speculative execution through port contention
SMoTherSpectre は、同時マルチスレーディング(SMT)プロセッサにおけるポート競合を、キャッシュに依存しないサイドチャnelとして利用することで、ユーザースペースアプリケーションからの機密情報を漏洩させる推測実行攻撃を提案する。攻撃者提供のコードを一切必要とせず、OpenSSH や OpenSSL に対しても実用的な攻撃を実証した。これは、キャッシュサイドチャネル対策が、このようなサイドチャネルに対して不十分であることを示している。
Spectre, Meltdown, and related attacks have demonstrated that kernels, hypervisors, trusted execution environments, and browsers are prone to information disclosure through micro-architectural weaknesses. However, it remains unclear as to what extent other applications, in particular those that do not load attacker-provided code, may be impacted. It also remains unclear as to what extent these attacks are reliant on cache-based side channels. We introduce SMoTherSpectre, a speculative code-reuse attack that leverages port-contention in simultaneously multi-threaded processors (SMoTher) as a side channel to leak information from a victim process. SMoTher is a fine-grained side channel that detects contention based on a single victim instruction. To discover real-world gadgets, we describe a methodology and build a tool that locates SMoTher-gadgets in popular libraries. In an evaluation on glibc, we found hundreds of gadgets that can be used to leak information. Finally, we demonstrate proof-of-concept attacks against the OpenSSH server, creating oracles for determining four host key bits, and against an application performing encryption using the OpenSSL library, creating an oracle which can differentiate a bit of the plaintext through gadgets in libcrypto and glibc.
研究の動機と目的
- 推測実行攻撃が、キャッシュに依存しない代替のマイクロアーキテクチャ的サイドチャネルを活用することで、従来のキャッシュベースのサイドチャネル防御を回避できるかどうかを調査すること。
- SMT プロセッサにおけるポート競合が、推測実行中の情報漏洩に、細粒度かつ効果的なサイドチャネルとして機能できるかどうかを示すこと。
- glibc や libcrypto などの広く使われているライブラリに、攻撃可能なコードガジェット(SMoTherガジェット)を自動的に発見するための手法とツールを開発すること。
- 攻撃者コードの注入を一切行わず、既存のコードのみを用いて、OpenSSH や OpenSSL といった実世界のサービスに対してエンドツーエンドの概念実証攻撃を構築すること。
- アーキテクチャ的防御が、推測状態のロールバックやキャッシュサイドチャネルの緩和に依存する場合、ポート競合に基づくサイドチャネルに対しては不十分であることを示すこと。
提案手法
- 同時マルチスレーディング(SMT)を活用し、共有実行ユニット上で被害者スレッドと攻撃者スレッドの間で制御されたポート競合を生じさせること。
- 分岐ターゲットインジェクション(BTI)を用いて、既存のバイナリ内の無害なコードパスに推測実行をリダイレクトすることで、コードの注入なしに情報漏洩を可能にすること。
- ポート競合によるパフォーマンス劣化を測定するという新規なサイドチャネルを採用し、それが被害者の命令実行と相関することを活用すること。
- 静的解析によりバイナリを分析し、推測実行時に測定可能なポート競合を引き起こす命令列を特定するガジェット発見ツールを開発すること。
- ポート競合のタイミング差を観測することで、秘密のビットを推定するオラクルを構築すること — 例えば OpenSSH の RSA キーのビットや OpenSSL 暗号化時のプレーンテキストビット。
- OpenSSH や OpenSSL の最新版に対して攻撃を検証し、標的コードに既知の脆弱性がなくても、ビット単位の漏洩が成功したことを実証した。
実験結果
リサーチクエスチョン
- RQ1キャッシュベースのサイドチャネルに依存せず、ポート競合などの代替マイクロアーキテクチャ的サイドチャネルを用いることで、推測実行攻撃を実行できるか?
- RQ2SMT プロセッサにおけるポート競合が、推測実行中の情報漏洩に、どの程度細粒度のサイドチャネルとして機能できるか?
- RQ3glibc や libcrypto といった広く使われているライブラリに、ポート競合を介して秘密を漏洩させるために利用可能な攻撃可能なコードシーケンス(ガジェット)が存在するか?
- RQ4攻撃者コードの注入なしに、OpenSSH や OpenSSL といった実世界のサービスに対して実用的な攻撃を実行できるか?
- RQ5キーナル・ページテーブル隔離や推測状態のロールバックといった既存の防御策が、ポート競合に基づくサイドチャネルに対して有効であるか?
主な発見
- SMT プロセッサにおけるポート競合は、キャッシュ動作とは独立して、推測実行攻撃に正確かつ効果的なサイドチャネルとして利用可能である。
- glibc に数百もの攻撃可能な SMoTher ガジェットが発見され、一般的なユーザースペースライブラリにおけるこうした攻撃の広範な潜在的可能性を示した。
- OpenSSH のホスト RSA キーから 4 ビットの漏洩を、ポート競合と BTI のみを用いて実現した概念実証攻撃が成功した。脆弱なコードパターンは不要であった。
- 別の概念実証攻撃では、libcrypto と glibc のガジェットを活用して、OpenSSL 暗号化中のプレーンテキストデータからのビット単位の漏洩を実現した。
- キャッシュベースのサイドチャネルが緩和された状態でも攻撃が有効であるため、キャッシュサイドチャネル緩和に依存する防御策は、ポート競合ベースのサイドチャネルに対して不十分であることが示された。
- 研究により、推測状態のロールバックのみに依存するアーキテクチャ的防御は、ポート競合サイドチャネルに対して効果がなく、漏洩が推測実行が完了する前に行われることを明らかにした。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。