Appleのカスタム設計チップに2つの新たな重大な脆弱性が発見された。ジョージア工科大学とルール大学ボーフムの研究チームによって発見されたこの脆弱性は、ChromeやSafariブラウザを通じて、クレジットカード情報や位置情報などの機密データが漏洩する可能性があることが明らかになった。
発見された脆弱性の概要
新たに発見された2つの脆弱性「FLOP」(False Load Output Prediction)と「SLAP」(Speculative Load Address Prediction)は、プロセッサの性能を向上させるために実装された「投機的実行」という機能に起因している。これらの脆弱性は、2021年9月以降に発売されたiPhone、iPad、Macなど、最新のAppleシリコンを搭載した多くのデバイスに影響を与える可能性がある。
研究チームは、これらの脆弱性を利用することで、ChromeやSafariブラウザを通じて、以下のような情報が漏洩する可能性があることを実証した:
- Gmailの受信トレイの内容
- Google Mapsの位置履歴
- iCloudカレンダーのイベント情報
- クレジットカード情報
- Amazon注文履歴
- Redditのユーザー活動履歴
FLOPとSLAPの技術的な詳細
FLOPの仕組み
FLOPは、M3およびA17世代以降のプロセッサに実装された「ロード値予測機能」(LVP: Load Value Predictor)の欠陥を突く攻撃手法である。このLVPは、プロセッサの性能を向上させるために導入された機能で、メモリからデータを読み込む際の値を予測することで、処理の遅延を最小限に抑えることを目的としている。
具体的には、プロセッサが同じメモリ位置から繰り返し同じ値を読み込むのを観察すると、LVPはその値がまた同じように読み込まれると予測する。この予測は、実際のメモリ内容が完全に異なる値に変更されていた場合でも行われる。そのため、プロセッサは誤った値に基づいて投機的実行を行い、その結果としてメモリの安全性チェックを迂回してしまう可能性がある。
攻撃者はこの挙動を悪用し、以下のような過程で機密データにアクセスすることが可能となる。まず、特定のメモリ位置から一定の値が読み込まれるように設定し、LVPにその値を「学習」させる。研究チームによると、信頼性の高い予測を引き起こすには約250回の学習用読み込みが必要とされる。次に、そのメモリ位置の実際の値を別の値に変更する。このとき、LVPは以前学習した古い値を予測値として使用してしまう。
投機的実行中、プロセッサはこの誤った予測値を使用して計算を続行する。この投機的実行のウィンドウは最大で330サイクル続くことがあり、その間に攻撃者は機密データを読み取り、キャッシュタイミング攻撃などの手法を用いてその値を抽出することができる。プロセッサが最終的に予測が間違っていたことを検出した時点で実行は巻き戻されるが、既にキャッシュに残された痕跡を通じてデータの漏洩が発生している。
この攻撃の特筆すべき点は、特にWebブラウザ環境での危険性である。SafariやChromeブラウザ上で、攻撃者は巧妙に細工されたJavaScriptコードを使用して、他のWebサイトのデータを読み取ることができる。例えば、GoogleマップやiCloudカレンダー、ProtonMailなどのサービスから個人情報を窃取できることが実証されている。
これは単なる理論的な脆弱性ではなく、研究チームは実際の環境でこの攻撃を成功させ、1秒あたり約0.5ビットの速度でデータを抽出できることを示している。また、この攻撃の検出は極めて困難であり、通常のセキュリティ監視では気付くことができない。これは、攻撃が正常なプロセッサの機能を利用して実行されるためである。
SLAPの仕組み
SLAPは、AppleのM2およびA15以降のプロセッサに実装されているロードアドレス予測機能(Load Address Predictor: LAP)の脆弱性を突く攻撃手法である。LAPは、プロセッサが次にアクセスするメモリアドレスを予測することで処理速度を向上させる機能だが、この予測メカニズムに潜在的な脆弱性が存在することが明らかになった。
研究チームの分析によると、LAPは特定の命令アドレスから発生するメモリアクセスパターンを監視し、そのパターンが一定の規則性を持つ場合に予測を行う。具体的には、メモリアクセスが一定の間隔(ストライド)で行われる場合、LAPはその規則性を学習し、次のアクセス先を予測する。この予測は、実際のメモリアクセスパターンが突然変更された場合でも、一時的に継続される。
SLAPの特徴的な点は、その予測範囲が255バイトに制限されていることである。これは、LAPの内部状態が8ビットの大きさと1つの符号ビットで構成されていることを示唆している。また、LAPが信頼性の高い予測を行うためには、最低でも500回の学習用アクセスパターンが必要であることが判明している。
攻撃の実行過程では、まずLAPに特定のアクセスパターンを学習させる。この学習フェーズでは、メモリアドレスが一定のストライドで増加するようなアクセスを繰り返し行う。続いて、突然異なるメモリレイアウトに切り替えることで、LAPの予測を意図的に誤らせる。プロセッサはこの誤った予測に基づいて投機的実行を行い、本来アクセスすべきでないメモリ領域の内容を読み取ってしまう。
投機的実行中に読み取られたデータは、キャッシュタイミング攻撃などの手法を用いて抽出することが可能である。特筆すべきは、この投機的実行のウィンドウが最大600サイクルまで継続可能であり、その間に複数の演算を実行できることである。これにより、攻撃者は読み取ったデータを効率的に抽出することが可能となる。
実際の攻撃では、Safariブラウザ上でこの脆弱性を利用することで、クロスサイトでの情報漏洩が可能であることが実証されている。研究チームは、Gmailの受信トレイの内容、Amazonの注文履歴、Redditのユーザー活動など、本来アクセスできないはずの機密情報を読み取ることに成功した。攻撃の実行には、悪意のあるJavaScriptコードを含むWebページを訪問するだけで十分なのだ。
さらに深刻な点は、この攻撃が従来のセキュリティ対策では検出が困難なことである。これは、攻撃がプロセッサの正常な機能を利用して実行されるためであり、通常のブラウザのサンドボックス保護やアドレス空間配置のランダム化(ASLR))などのセキュリティ機能を迂回することができる。
研究チームの実験によると、SLAPを用いた攻撃は、M2プロセッサ上で約80.90%の精度でデータを抽出することが可能で、1秒あたり約0.30ビットの速度でデータを漏洩させることができる。この攻撃手法は、プロセッサのアーキテクチャレベルでの根本的な対策が必要とされる新たな脅威となっている。
影響を受けるデバイス
この脆弱性の影響を受ける主なデバイスは以下の通りだ:
Mac
- 2022年以降の全てのMacBook Air、MacBook Pro
- 2023年以降の全てのMac mini、iMac、Mac Studio、Mac Pro
iPad
- 2021年9月以降の全てのiPad Pro(第6世代、第7世代)
- iPad Air(第6世代)
- iPad mini(第6世代)
iPhone
- 2021年9月以降の全てのiPhone(13、14、15、16シリーズ)
- iPhone SE(第3世代)
現実的な脅威
FLOPとSLAPの脆弱性がもたらす脅威は、その攻撃の容易さと影響範囲の広さから、特に深刻な問題として捉える必要がある。従来の多くのセキュリティ脆弱性は、攻撃者が標的デバイスに物理的にアクセスする必要があったり、マルウェアをインストールする必要があったりしたが、これらの新しい脆弱性はそのような前提条件を必要としない。
最も憂慮すべき点は、攻撃の実行が極めて容易なことだ。ユーザーが悪意のあるWebサイトを訪問するだけで攻撃が開始され、特別なソフトウェアのインストールや、ユーザーの明示的な操作も必要としない。攻撃用のスクリプトは通常のWebサイトのJavaScriptコードとして実行されるため、ブラウザの標準的な機能として処理される。そのため、ユーザーは攻撃を受けていることに気付くことすらできない。
また、これらの攻撃は従来のセキュリティ対策をほぼ完全に迂回することができる。アンチウイルスソフトウェアやファイアウォール、さらにはブラウザのサンドボックス保護やASLRといった高度なセキュリティ機能さえも、これらの攻撃には効果がない。影響を受ける情報の範囲も極めて広く、Gmailの受信トレイの内容、Google Mapsの位置履歴、クレジットカード情報、iCloudカレンダーのイベント情報など、極めて機密性の高い個人情報が漏洩する可能性が示されている。
対策が困難な点も大きな課題である。プロセッサの基本的な最適化機能に起因する脆弱性であるため、単純なソフトウェアアップデートでは完全な解決が難しい。また、JavaScriptを無効化するような対策は、現代のウェブサイトの多くの機能を使用不能にしてしまうため、現実的な解決策とはなりにくい。さらに、2021年9月以降に発売された最新のAppleデバイスに広く影響を与えるため、潜在的な被害規模は極めて大きいと言える。
Appleの対応と対策状況
Appleは研究チームからの報告を受け、この問題について認識している。同社の声明によると:
「この概念実証は、このような脅威に対する理解を深めるものであり、研究者との協力に感謝する。現時点での分析では、この問題は直接的なリスクをユーザーにもたらすものではないと考えている」としている。
現在可能な対策
現時点でAppleからの公式な修正パッチは提供されていないものの、ユーザーや組織がとることのできる実用的な対策がいくつか存在する。これらの対策は完全な防御とはならないものの、リスクを軽減する効果が期待できる。
ブラウザレベルでの対策として最も確実なのは、SafariとChromeでJavaScriptを無効化することである。しかし、この方法は現代のWebサイトの多くの機能が使用できなくなるため、実用性に大きな制約がある。そのため、重要な情報を扱う際にのみ一時的にJavaScriptを無効化する、あるいは機密性の高い作業を行う際には影響を受けないブラウザを使用するなど、状況に応じた使い分けが現実的な方法となる。
システムレベルでは、オペレーティングシステムとブラウザを常に最新の状態に保つことが重要だ。また、研究チームが発見したように、AppleのM2およびM3プロセッサのEコア(効率重視コア)では、この脆弱性の影響を受けにくいことが判明している。そのため、macOSではpthread_set_qos_class_self_np
APIを使用してQOS_CLASS_BACKGROUNDを指定することで、重要な処理をEコアで実行させることができる。ただし、この方法は処理性能に影響を与える可能性があり、計算負荷の高いアプリケーションには適さない場合がある。
組織レベルでの対策としては、まず既存のセキュリティポリシーの見直しが必要となる。特に、重要なシステムへのアクセス制限を強化し、可能な限り影響を受けるデバイスでの機密情報の取り扱いを制限することが推奨される。また、従業員への教育も重要で、不審なWebサイトへのアクセスを避けること、重要な情報を扱う際は特に注意を払うことなどの啓発が必要となる。
技術的な対策として、研究チームは特にArmv8.4-A ISAのData Independent Timing(DIT)ビットの活用を提案している。このビットを設定することで、特定の命令の実行時間がオペランドに依存しないようになり、一部の投機的実行攻撃を緩和できる可能性がある。ただし、この対策はすべての状況で有効というわけではなく、またパフォーマンスへの影響も考慮する必要がある。
長期的な対策としては、重要な情報を扱うアプリケーションの開発者が、セキュリティに配慮したコーディングプラクティスを採用することも重要である。特に、機密データの扱いを最小限に抑え、必要な場合のみメモリに保持するような設計を心がけることで、攻撃による影響を軽減できる可能性がある。
これらの対策は、単独では完全な防御とはならないものの、複数の対策を組み合わせることで、リスクを許容可能なレベルまで低減することが可能である。また、Appleからの正式な対策が提供されるまでの暫定的な防御手段として、これらの対策を適切に実施することが推奨される。
今後の対応について
この脆弱性の発見は、現代のプロセッサアーキテクチャが直面している重要な課題を浮き彫りにしている。性能向上のための最適化機能が、新たなセキュリティリスクを生み出す可能性があることを示している。
研究チームは2025年のUNISEX Security SymposiumとIEEE Symposium on Security and Privacyでこれらの発見について発表を予定している。今後、Appleによる対策パッチのリリースが期待される。
Sources
コメント