Spectre v2対策であるeIBRSやSafe RETは、特権境界(例えばユーザースペースからカーネル空間への移行時など)で分岐予測子の状態を無効化または分離することで機能します 。これらの防御策の前提は、攻撃者が無効化後、予測子が参照されるまでのごく短い間隔で予測子を操作できないというものでした。
TONTOUはその前提を覆します。AMDのSafe RETにおいて、この脆弱な時間的隙間は、わずか2命令分の幅しかありません 。一般ユーザー権限の攻撃者は、精密にタイミングを合わせたハードウェア割り込み(INTERRUPT INJECTION:割り込みインジェクション)をこの隙間に差し込み、防御機構がすでに実行された後、かつカーネルが予測子の状態を消費する前に、分岐予測子を再び汚染することができます 。これにより、すべての防御機構が機能しているにもかかわらず、投機的実行によるサイドチャネル情報漏洩が再び可能になります。
この攻撃に必要なのは、ターゲットマシン上で一般ユーザー権限のコードを実行できることだけであり、管理者権限などの昇格は不要です 。
研究チームは完全なエンドツーエンドのエクスプロイトを構築し、複数のプロセッサ世代でテストを実施しました。
Intelプラットフォームでは、Cascade Lake RefreshおよびArrow LakeにおいてeIBRSの部分的な迂回が実証されましたが、攻撃対象領域はAMD Safe RETの場合とは異なります 。なお、同手法によるAMD Zen 4での分岐誤誘導の成功は確認されていません 。
開示と対応のタイムラインは以下の通りです。
Intelは協調的開示プロセスの中で研究結果を確認し、バグ報奨金プログラムから賞金を授与しましたが、新たな緩和策を開発しないと研究者らに伝えています。その理由として、実際の悪用には情報開示用ガジェットの可用性など、多くの要因が関わることを挙げています 。
TONTOUは、投機的実行攻撃の重要な進化形を示しています。初期のSpectre亜種が予測メカニズムそのものを標的にしていたのに対し、TONTOUは、過去の攻撃を防ぐために構築されたソフトウェアおよびハードウェアの防御機構(緩和策そのもの)を攻撃します。無効化と使用の間の競合状態を特定したことで、研究者らは根本的に異なる防御アプローチを必要とする新たな脆弱性クラスを切り開きました。
この攻撃はまた、CPUのセキュリティ問題がソフトウェアパッチだけで解決できるものではないことを示しています。Linuxカーネルの修正は、AMD Zenプロセッサにおける特定の割り込みインジェクションの隙間を塞ぐものですが、「予測子の無効化と使用は不可分な操作として扱える」という根本的なアーキテクチャ上の前提が誤りであったことは証明されました。