はじめに – 「Pixnapping」攻撃の概要
セキュリティ研究者たちは、「Pixnapping」と名付けられた新たな高度な攻撃手法を公開しました。この攻撃は、Google Authenticatorやその他の機密性の高いモバイルアプリケーションから二段階認証(2FA)コードを30秒未満で抽出することができます。Pixnappingは、Androidのグラフィックレンダリングシステムの基本的な機能を悪用し、被害者アプリケーションからピクセルデータを盗み出すサイドチャネル攻撃を生成します。
従来のブラウザベースのピクセル窃盗攻撃がiframeにウェブサイトを埋め込むことに依存していたのとは異なり、この新しい手法はAndroidインテントを使用して被害者アプリケーションを起動し、その上に半透明の攻撃者制御アクティビティを重ねます。この脆弱性(CVE-2025-48561として追跡)は、ピクセル窃盗攻撃の重大な進化を示しており、最新のブラウザセキュリティ保護を回避し、複数のデバイスメーカーのAndroidユーザーを脅かします。
攻撃のメカニズム
この攻撃は、AndroidのSurfaceFlingerサービスが複数のウィンドウを合成する方法を悪用します。これにより、悪意のあるアプリは、慎重に調整されたぼかし操作とタイミング測定を通じて、被害者アプリケーションから個々のピクセルを分離、拡大、抽出することができます。フレームワークは主に3つのステップで動作します。
- ステップ1: 攻撃者アプリは、被害者アプリケーションからエクスポートされたアクティビティを開くためにAndroidインテントを送信し、そのピクセルをレンダリングパイプラインに提出します。
- ステップ2: 攻撃者は、マスキング、拡大、エンコーディング技術を使用して、個々の被害者ピクセル上で計算を行う半透明のアクティビティスタックを作成します。
- ステップ3: 攻撃は、グラフィカルデータ圧縮などのパターン依存型GPU最適化によって引き起こされるレンダリング時間の差を測定し、ピクセルカラー情報を漏洩させます。
研究者たちは、Google Pixel 6、7、8、9デバイス、およびSamsung Galaxy S25スマートフォンでこの攻撃を成功させ、デバイスに応じて0.15〜2.11ピクセル/秒の漏洩率を達成しました。
Google Authenticatorへの影響
Pixnappingの最も憂慮すべきデモンストレーションは、Google Authenticatorから有効期限が切れる前に一時的な2FAコードを盗むことです。研究者たちは、文字全体を復元するのではなく、各桁から慎重に選択された4つのピクセルを漏洩させることで数字を識別する最適化されたOCRスタイルの技術を使用し、30秒の更新ウィンドウ内で完全な6桁のコードを回復するのに53〜73%の成功率を達成しました。Google Pixelデバイスでは、平均抽出時間は14.3秒から25.8秒の範囲で、Pixel 6が平均14.3秒で最速でした。
この攻撃は特別なAndroid権限を必要とせず、わずかに透明なレイヤーの下に悪意のあるアクティビティを隠すことでステルスに動作します。ユーザーが悪意のあるアプリをインストールして起動すると、それ以上のユーザー操作は必要ありません。この技術は、Google Authenticatorのインターフェースにおける可変幅フォントと間隔に動的に適応し、利用可能な時間ウィンドウを最大化するために新しい30秒間隔の開始を待ってから抽出プロセスを開始します。
広範な脅威と影響
Google Authenticatorへの攻撃が最も時間的に制約のあるデモンストレーションである一方で、Pixnappingははるかに広範な機密データを脅かします。研究者たちは、以下の情報から情報を正常に抽出しました。
- Googleマップのタイムライン(タイムスタンプと住所を含む完全な位置情報履歴)
- Signalのプライベートメッセージ(スクリーンセキュリティが有効な場合でも)
- GoogleメッセージからのSMS会話
- Venmoの口座残高と取引詳細
- Gmailの受信トレイの内容(送信者情報とメッセージプレビューを含む)
- Googleアカウントの個人情報(名前、住所、メールアドレス)
この攻撃は、従来のピクセル窃盗技術を大幅に軽減してきたブラウザベースの保護(X-Frame-OptionsヘッダーやSameSiteクッキーポリシーなど)を根本的に回避します。上位100万のウェブサイトの調査では、従来のiframeベースの攻撃に対して脆弱なのはわずか0.2%でしたが、Chromeブラウザアプリを通じて開かれた場合は100%のウェブサイトが脆弱であり、Chromeカスタムタブ経由でアクセスされた場合は99.3%が依然としてリスクにさらされています。さらに、研究者たちは、96,783のAndroidアプリにわたる238,036のアクティビティが暗黙的インテントを通じて標的になり得ることを特定しました(アプリあたりのエクスポートされたアクティビティの中央値は2つ)。
対策と今後の課題
研究者たちは2025年2月24日にGoogleに調査結果を開示し、高深刻度評価とCVE割り当てを受けました。Googleは2025年9月2日に初期パッチをリリースしましたが、研究者たちはその後回避策を発見し、この緩和策がSamsungデバイスを保護しないことを確認しました。GoogleとSamsungへの追加の開示は9月に行われ、包括的な緩和策に関する調整は2025年10月13日現在も進行中です。
研究チームは、frame-ancestors
Content Security Policyディレクティブがブラウザベースの攻撃を無力化したのと同様に、攻撃者が被害者ピクセル上で計算を行うことを防ぐことで、攻撃フレームワークの第二の条件を標的とすることを推奨しています。提案されている緩和策の1つは、開発者がアクティビティ上での透明なレイヤーを明示的な許可リストに制限できるようにすることです。これにより、アプリはデフォルトで脆弱になるのではなく、オプトインで保護されるようになります。このアプローチは、Androidアプリのレイヤー化の協調的なマルチアクター設計を維持しつつ、機密性の高いアプリケーションをピクセル抽出から保護するでしょう。