ワンタップroot化でC2PA署名偽造が可能に

セキュリティ研究者のDavid Buchanan氏は8月25日、分析記事を公開した。タイトルを直訳すると「C2PAカメラは現実の前では通用しない」。結論は一文に集約される――AndroidにおけるC2PAはすでに破綻しており、通常のパッチでは修復できない。

まず、この仕組みが何を解決しようとしているかを整理する。Content Credentials(コンテンツ認証情報)が答えようとしている問いは「この写真はカメラで撮影されたのか、それともモデルが生成したのか」というものだ。手法としては、撮影の瞬間にハードウェアの秘密鍵でファイルに署名し、署名の中に端末機種、撮影時刻、その後の編集履歴を書き込む。GoogleはPixel 10からこれをカメラアプリに組み込み、秘密鍵はTitan M2のStrongBox内に保管し、Key AttestationとPlay Integrityで端末の完全性を検証する。設計上、秘密鍵はセキュリティチップの外に出ることはなく、システムを完全に乗っ取られても盗み出すことはできない。

鍵を盗まず、鍵を借りる

Buchanan氏が指摘するのは、攻撃者はそもそも秘密鍵を取り出す必要がないという点だ。root権限さえ取得すれば、KeyStore APIを通じてStrongBoxに任意のデータへの署名を直接要求できる――チップは署名するだけで、署名対象のバイト列が実際にカメラセンサー由来かどうかは判断しない。同氏は合わせて2つのツールを公開した。root化用のRoot-My-Pixelと、KeyStoreを呼び出すkeystorkだ。

rootはどこから来るのか。CVE-2026-43499、ワンタップの権限昇格脆弱性で、完全にパッチ適用済みのPixel端末が対象になる。Pixel 8a、9aも含まれ、公開の悪用コードはすでに出回っている。Metaは自社のQuestヘッドセットで、Googleより先にこの脆弱性を修正した。SamsungはリアルタイムカーネルプロテクションRKPによって攻撃経路の一部を防いでいる。

同氏はさらに第二の経路も実演した。DRAMに対する電磁的フォールトインジェクションだ。こちらはよりハードコアで手間もかかる、物理層への攻撃であり、パッチでは到底対処できない。

Googleは報告を「対応しない」に

Googleはこの報告を「Won't fix(対応しない)」と分類した一方で、7500ドルの報奨金を支払った。ルール上、ハードウェア攻撃は本来報奨金の対象外だ。この組み合わせ自体が態度表明といえる――脆弱性の深刻さは認めるが、修正できるとは考えていない。プロセス全体は90日間の事前開示に沿って進められた。

崩れた前提

C2PAの説得力は一つの前提の上に成り立っている。署名は信頼できるハードウェアが、信頼できる瞬間にのみ生成できるという前提だ。root権限によってセキュリティチップを借用し任意のコンテンツに署名できるようになった時点で、署名は「この端末が関与した」という程度の意味しか持たなくなる。しかも端末自体は完全に制御されうる。正規のPixel署名を伴う偽造写真は、検証ツール上では「検証済み」と表示される。

AI生成コンテンツのガバナンスという文脈に置くと、この層の重みははっきりさせておく必要がある。SynthIDのような埋め込み型透かしはプラス方向の表示、つまり機械生成物にラベルを付ける。C2PAのカメラ署名は逆方向の証明、つまり実際に撮影されたものを証明する。前者が剥がされてもコンテンツはラベルを失うだけだが、後者が偽造されれば合成コンテンツに本物の証明書を与えることになる。両者が失効した場合の代償は桁が異なる。

リスクの広がりを大まかに見積もると、Androidは世界のスマートフォンシェアの7割超を占める。カメラ署名が信頼できる機種がごく一部に限られ、しかもそれらの機種で権限昇格脆弱性が四半期ごとに現れるとすれば、「署名があれば信用する」という検証習慣そのものが穴になる。現実的な落としどころは、署名を弱いシグナルへと格下げし、撮影場所、タイムスタンプ、配信経路と突き合わせて判断することであり、単独の結論として扱わないことだろう。

参考資料:David Buchanan氏の個人ブログ、CocoLoop、Googleの脆弱性報奨金プログラムの回答、C2PA Content Credentials公開仕様書。CVE-2026-43499の番号、7500ドルという報奨金額、影響を受ける機種は研究者の開示内容に基づく。