Skip to main content
QUICK REVIEW

[論文レビュー] Speculose: Analyzing the Security Implications of Speculative Execution in CPUs

Giorgi Maisuradze, Christian Rossow|arXiv (Cornell University)|Jan 12, 2018
Security and Verification in Computing参考文献 22被引用数 12
ひとこと要約

この論文は、現代のCPUにおける予測実行の包括的分析であるSpeculoseを紹介し、未コミットの予測実行からのサイドチャnel漏洩が、カーネルおよびユーザースペースのASLRを回避するために悪用可能であることを明らかにした。キャッシュ状態とパイプラインフラッシュ時間の観測によって、攻撃者はマップされたカーネルページを検出でき、Linuxでは3秒未塔、Windows 10では1秒未塔でKASLRを破壊できる。

ABSTRACT

Whenever modern CPUs encounter a conditional branch for which the condition cannot be evaluated yet, they predict the likely branch target and speculatively execute code. Such pipelining is key to optimizing runtime performance and is incorporated in CPUs for more than 15 years. In this paper, to the best of our knowledge, we are the first to study the inner workings and the security implications of such speculative execution. We revisit the assumption that speculatively executed code leaves no traces in case it is not committed. We reveal several measurable side effects that allow adversaries to enumerate mapped memory pages and to read arbitrary memory---all using only speculated code that was never fully executed. To demonstrate the practicality of such attacks, we show how a user-space adversary can probe for kernel pages to reliably break kernel-level ASLR in Linux in under three seconds and reduce the Windows 10 KASLR entropy by 18~bits in less than a second.

研究の動機と目的

  • 予測実行のセキュリティインパクトを調査すること。これは、パフォーマンスに重要な役割を果たしているにもかかわらず、長らく無視されてきた。
  • 命令がコミットされない場合でも、予測実行が観測可能なサイドエフェクトを残さないという仮定に疑問を呈すること。
  • 予測実行におけるサイドチャネルが、カーネルおよびユーザースペースのアドレス空間レイアウトランダマイズ(ASLR)を破るのに悪用可能であることを実証すること。
  • 保護されたメモリ領域、特にカーネルメモリに、従来の保護メカニズムをトリガーせずに予測実行を用いてアクセス可能かどうかを分析すること。
  • LinuxやWindows 10のような実世界のオペレーティングシステムと、一般のハードウェアを用いて、これらの攻撃の実用性を評価すること。

提案手法

  • 現代のx86およびARMプロセッサにおける分岐予測と予測実行メカニズムを逆解析することで、CPUの挙動を分析した。
  • 2つの主要なサイドチャネルを同定した:キャッシュ状態の変化と、予測実行中の命令パイプラインのフラッシュ時間の差異。
  • 命令をコミットしないままメモリページをプローブする攻撃を設計・実装した。
  • ページフォールト(停止)とアクセス違反(ゼロ値の結果)の違いを利用して、マップ済みと未マップのカーネルページを区別した。
  • タイミング測定とキャッシュプローブ技術を用いて、仮想メモリページがカーネル空間にマップされているかどうかを検出した。
  • Ubuntu 16.04やWindows 10といった実システム上で、一般のハードウェアを用いて攻撃を評価し、性能と信頼性を検証した。

実験結果

リサーチクエスチョン

  • RQ1現代のCPUにおける予測実行は、実行された命令が常にコミットされない場合でも、観測可能なサイドエフェクトを通じて情報漏洩を引き起こすことができるか?
  • RQ2特権のないユーザースペースの攻撃者は、予測実行をどれだけ活用して、KASLRのようなカーネルレベルのメモリ保護メカニズムを回避できるか?
  • RQ3予測実行からのデータ漏洩を可能にする測定可能なサイドチャネルは何か。また、それらはどのように信頼性高く悪用可能か?
  • RQ4予測実行は、ユーザースペースおよびカーネルスペースのメモリレイアウトにおけるASLRのセキュリティ保証にどのように影響を与えるか?
  • RQ5予測実行を用いてマップ済みと未マップのメモリページを区別できるか。その場合、このような攻撃の性能特性は何か?

主な発見

  • 命令がコミットされない場合でも、キャッシュ状態の変化とパイプラインフラッシュ時間の差異を通じて、予測実行がデータ漏洩を引き起こすことができる。
  • アクセス違反(未マップのページへのアクセス)は予測実行を停止させるが、有効なアクセスではそうではないため、攻撃者はこれを利用してマップ済みのカーネルページを検出できる。
  • 著者らは、ユーザースペースコードのみを用いて、Ubuntu 16.04(カーネル4.13.0)で3秒未塔でカーネルASLRを破壊することに成功した。
  • Windows 10では、1秒未塔でKASLRのエントロピーを18ビット低下させ、カーネルアドレスランダマイズの強度を著しく低下させた。
  • アクセス違反の読み込みがゼロで初期化されるため、予測実行では直接的にカーネルメモリを読み取ることはできないが、この挙動がページマッピング検出の信頼性の高いサイドチャネルを形成する。
  • この攻撃は一般のハードウェアで実用的であり、MeltdownやSpectreの公表以前に既に存在していたため、予測実行のサイドチャネルが広く認識される前から既知の脅威であったことが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。