IBMはこのほど、「GhostRace: Exploiting and Mitigating Speculative Race Conditions - Syssec@IBM Research」において、投機的実行をサポートするマイクロプロセッサに新しい脆弱性を発見したと報じた。これは「Spectre v1」(CVE-2017-5753)として知られる脆弱性の亜種の一つとされ、「GhostRace」と呼ばれる。この脆弱性は「CVE-2024-2193」として追跡されており、悪用されるとCPUから任意のデータを取得可能とされる。

  • GhostRace: Exploiting and Mitigating Speculative Race Conditions - Syssec@IBM Research

    GhostRace: Exploiting and Mitigating Speculative Race Conditions - Syssec@IBM Research

脆弱性「GhostRace」の詳細

GhostRaceの詳細は論文で公開されている(参考:「(PDF) GhostRace: Exploiting and Mitigating Speculative Race Conditions」)。論文によると、GhostRaceの目的は競合のないクリティカル領域における推測的な競合状態の悪用により任意のカーネルデータを取得することにあるとされる。

投機的実行(Speculative Execution)は分岐処理の先の命令をあらかじめ処理し、分岐後にその処理を継続することで高速化する技法。分岐後に不要となった処理は破棄(無視)される。Spectre v1ではこの投機的実行の脆弱性を悪用する。

競合状態は2つ以上のプロセスが1つの共有リソースを奪い合う状態を指す。この競合状態は適切に解消する必要があり、一般的なオペレーティングシステムではミューテックスやスピンロックなどの同期制御の仕組みが提供される。

GhostRaceは投機的実行の脆弱性(Spectre v1)を使用することで競合状態を解決する同期制御をバイパスし、競合状態のないクリティカル領域を投機的競合状態(SRCs: Speculative Race Conditions)に変化させ、カーネルデータへのアクセスを可能にする。論文ではこの脆弱性の深刻度を確認するため、解放後使用を伴う投機的実行(SCUAF: Speculative Concurrent Use-After-Free)に注目して実験している。実験の結果、研究者たちはカーネルメモリを12KB/sで取得することに成功している。

  • 解放後使用を伴う投機的実行(SCUAF)の例 - 引用:GhostRaceの論文より

    解放後使用を伴う投機的実行(SCUAF)の例 引用:GhostRaceの論文より

回避策

研究者たちは今回の実証実験にLinuxを使用している。そのため、この攻撃の回避策としてLinuxの同期制御における対策方法(投機的実行の防止)を紹介している。この対策は、CPUアーキテクチャから見たときのSpectre v1への対策と同じとされる。

この問題は2023年後半に主要なハードウェアベンダー(Intel、AMD、ARM、IBM)に報告されており、すべてのベンダーが問題の存在を認めたとされる。しかしながら、CPUアーキテクチャ上の対策方法はSpectre v1と同じであることから、CPUベンダーによる追加の対策はないと考えられる。

そのため、研究者たちが示したとおりオペレーティングシステム側で回避策を実装することになるが、Linuxの開発者はパフォーマンスの低下を懸念して別の対策を取り入れている。研究者はこの対策について「攻撃対象領域を完全に閉じるには不十分」と述べており、攻撃を完全に防ぐことはできないとみられている。