SLAP: データ推測攻撃 (data Speculation attacks via Load Address Prediction)
- SLAP攻撃は、Apple SiliconのM2/A15 CPUで発生する新たな投機実行攻撃。
- ロードアドレス予測器(LAP) によって、メモリアクセスパターンをもとに次のメモリアドレスを予測し、性能を向上させる。
- 予測を誤ると、CPUがアクセスしてはならないデータを投機実行で処理し、セキュリティリスクを招く。
- 実例として、Safari Webブラウザでリモート攻撃者がメール内容やブラウジング行動を復元できる攻撃が実演された。
FLOP: 誤ったロード出力予測(False Load Output Predictions)
- FLOP攻撃は、Apple M3/A17 CPUでデータ依存性を予測することで発生する、もう1つの投機実行攻撃。
- ロード値予測器(LVP) によって、メモリサブシステムが返すデータ値を予測し、性能を向上させる。
- 予測を誤ると、メモリ安全性のためのプログラムロジックにおける重要な検査を回避し、メモリに保存された秘密を漏えいさせうる攻撃面を開く。
- SafariとChrome Webブラウザで、位置履歴、カレンダーイベント、クレジットカード情報などを復元する攻撃が実演された。
デモ
- Proton Mailの受信トレイデータ漏えい: M3 CPUのLVPをWebKit内のJavaScriptコードで訓練し、受信トレイの内容をアドレス空間に取り込む。
- グレート・ギャツビーを読む: Apple M2 CPUでLAPを使って秘密の文字列を復元する概念実証。
- ハリー・ポッターを読む: Apple M3 CPUでLVPを使って誤った配列インデックスを予測し、文字列の文字を参照する概念実証。
研究チーム
- Jason Kim, Jalen Chuang, Daniel Genkin (Georgia Institute of Technology)
- Yuval Yarom (Ruhr University Bochum)
SLAPおよびFLOP FAQ
Is my Apple device affected?
- Macノートブック: 2022年以降に発売されたすべてのモデル (MacBook Air, MacBook Pro)
- Macデスクトップ: 2023年以降に発売されたすべてのモデル (Mac Mini, iMac, Mac Studio, Mac Pro)
- iPad: 2021年9月以降に発売されたすべてのiPad Pro、Air、Miniモデル
- Pro第6世代および第7世代、Air第6世代、Mini第6世代
- iPhone: 2021年9月以降に発売されたすべてのモデル
- iPhone 13、14、15、16の全モデルおよびSE第3世代
Why are the SLAP and FLOP attacks significant?
- 保護メカニズム: 通常、Webブラウザは2つの開いているWebページが相互に隔離されるようにし、1つのページが別のページの内容を読めないよう保護する。
- 脆弱性: SLAPとFLOPはこの保護を無効化し、攻撃者のページが標的ページの機微データを読めるようにする。
- 露出するデータ: 位置履歴、クレジットカード情報など
How can I defend against SLAP and FLOP?
- FLOPには緩和策があるが、これはソフトウェアベンダーのパッチが必要であり、ユーザーが直接解決することはできない。
- Appleは今後のセキュリティアップデートでこの問題に対処すると明らかにしており、自動アップデートを有効にして最新のOSとアプリケーションを維持することが重要。
What about other processor vendors?
- Intel、AMD、Qualcomm、Ampereなどの製品では、まだSLAPまたはFLOPの兆候は見つかっていない。
What about other web browsers?
- Firefoxなどその他のブラウザはテストしていない。
Can I detect if someone is using SLAP or FLOP on my device?
- SLAPとFLOPはマイクロアーキテクチャベースの攻撃であり、システムログに痕跡を残さない。
Are any malicious actors abusing SLAP or FLOP in the wild?
- 現時点で、SLAPまたはFLOPが実際に使われた証拠はない。
When did you notify Apple?
- SLAP: 2024年5月24日にAppleへ報告
- FLOP: 2024年9月3日にAppleへ報告
技術的な質問
サイドチャネル(Side Channel)とは?
- コンピュータハードウェア実装の脆弱性を悪用する攻撃
- ソフトウェアバグではなく、ハードウェア動作から生じる情報漏えいを利用する。
- データ漏えい経路
- 音、電磁波、熱放散などの物理現象
- CPUの共有資源(コア、キャッシュ、内部バッファなど)で発生する競合(contention)
- CPU競合による情報露出
- 時間計測や消費電力などの間接変数を通じて、標的の行動パターンを推測する。
投機実行(Speculative Execution)攻撃とは?
- 投機実行: CPUが制御フローを予測して命令を先回りして実行する最適化手法
- 予測が外れると状態を巻き戻すが、キャッシュなどに微細な痕跡が残る
- Spectre攻撃
- 誤ったフローへの予測実行を誘導する。
- 投機実行中に機微データを使う命令が実行されると、データ値が間接的に露出する。
- SLAPおよびFLOPでの拡張
- Apple CPUは制御フローだけでなくデータフローまで予測する。
- FLOPは誤ったデータ値に基づく命令実行を引き起こす。
SLAPの動作方式
- Load Address Prediction (LAP) の分析
- 特定のメモリアドレスパターンを学習させると、LAPが次のアドレスを予測してデータ処理を実行する。
- ハードウェアプリフェッチ(prefetching)とは異なり、予測されたデータで命令を実行する。
- Safari脆弱性の悪用
- iLeakageが発見したSafariの分離問題をもとに、異なるWebページが同一プロセスで処理されるよう強制する。
- 攻撃者のWebページが標的Webページの文字列データにアクセスする。
FLOPの動作方式
- Load Value Prediction (LVP) の分析
- 同じデータ値が繰り返し返されると、LVPが結果を予測する。
- 誤ったメモリ値を使って命令を実行する。
- SafariおよびChrome攻撃
- Safari: JavaScriptデータ構造の型情報を予測し、誤ったデータ構造で命令を実行する。
- Chrome: WebAssembly関数呼び出し時に、誤った引数によってメモリ読み取りエラーが発生する。
SLAPとFLOPの違い
- SLAP: Load Address Predictor (LAP) を使って文字列割り当ての近接性を悪用する。
- FLOP: Load Value Predictor (LVP) を使ってデータ完全性検査を回避する。
- LAP vs LVP
- LAP: 次のメモリアドレスを予測
- LVP: 次に返されるメモリ値を予測
- LAPは長い学習過程を必要とするが、パターン予測が可能
JavaScriptとWebAssemblyとは?
- JavaScript: Webコンテンツを動的に更新する言語
- WebAssembly: 高性能なWebアプリケーションのための言語で、JavaScriptと連携する。
- 攻撃の影響
- 両方の言語ともブラウザで自動実行されるため、悪意あるコードをダウンロードしなくても攻撃可能。
SafariとChromeが攻撃対象として選ばれた理由
- Safari:
- Site Isolationがなく、異なるドメインのWebページが同一プロセスで実行されうる。
- LAPおよびLVPベースの攻撃面が拡大する。
- Chrome:
- Site Isolationは適用されているが、一部の場合には同一サイトのサブドメインが1つのプロセスで処理される。
- LAPおよびLVP攻撃は依然として可能。
研究支援
- この研究はAFOSR、Alfred P Sloan Research Fellowship、ARC Discovery Project、DARPA、DFG、Qualcomm、Cisco、Zamaの支援を受けている。
1件のコメント
Hacker Newsのコメント
SLAP のデモは、多層防御が脆弱性の実行可能性をどう左右しうるかをよく示している。Safari の脆弱性は、
window.open呼び出し時に新しいウィンドウを個別のプロセスとして分離できないために発生するM3 における LVP の存在をリバースエンジニアリングする部分が興味深い。8 バイトのロードでは、ロード値が 0 のときにのみ LVP が有効になる。これはメモリ安全性のための対策かもしれない
Spectre と Meltdown 攻撃、および関連論文は、初めて見る人にとって読む価値がある
Safari では、キャッシュヒットとミスを区別するために、NOT ゲートベースのキャッシュ増幅の原理を使っている。Web 環境でもキャッシュヒットとミスを区別できる
Chrome のサイト分離が完全な緩和策ではないことを示している。同一サイトの 2 つのサブドメインが 1 つのプロセスに統合されうるコーナーケースが存在する
ハードウェア脆弱性の公表に向けたマーケティング文化は奇妙に感じられる。なぜ単に脆弱性を報告して論文を発表するだけでなく、カスタムドメイン、ロゴ、FAQ などを作るのか疑問だ
昨年、Intro to Cyber Security の授業で Daniel Genkin 教授に会った。Apple CPU に対する投機的攻撃を研究中だと言っていた。セキュリティはほとんど保証されていないのだと理解するようになった
信頼できないサイトでは、デフォルトで js を無効化する傾向がある。結局のところ、これは誰かのプログラムを自分のマシンで実行しているということだ
Apple が最近、セキュリティ修正を含む macOS と iOS のマイナーバージョンアップデートを公開した。この脆弱性が修正されたのか確認した人がいるのか気になる
RUB は高度な攻撃セキュリティ研究のグローバルな中心地になったように見える。10 年前には自分が注意を払っていなかっただけなのか、それとも新しい現象なのか気になる