C2PA相机在现实面前不堪一击
摘要
本文揭示了Android平台上的C2PA相机技术的关键漏洞,表明root权限漏洞和硬件攻击可以绕过其加密签名,使其在面对AI伪造时无效。
<p><a href="https://lobste.rs/s/4netv1/c2pa_cameras_do_not_survive_contact_with">评论</a></p>
查看缓存全文
缓存时间: 2026/08/25 17:45
# C2PA相机在现实接触中无法存活
来源:https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html
*作者:David Buchanan (又名 retr0id),2026年8月25日*
你可能听说过C2PA (https://c2pa.org/) 这项技术,它声称能通过让相机对拍摄的照片进行加密签名,奇迹般地拯救我们免受泛滥的AI伪造。为密码学欢呼吧 (https://www.aumasson.jp/murphy.html)!
抱歉,这行不通。这里面事情很多,我尽量快点说重点:
- 在安卓平台上,C2PA相机应用依赖于密钥认证 (https://developer.android.com/privacy-and-security/security-key-attestation) 和/或Google Play完整性验证 (https://developer.android.com/google/play/integrity),以防止用户篡改应用来对任意文件签名(而非来自设备图像传感器的数据)。
- 能够对任意文件签名破坏了C2PA的信任模型 (https://spec.c2pa.org/specifications/specifications/2.4/specs/C2PA_Specification.html#_trust_model)。
- Root权限提升漏洞会破坏安卓的密钥认证安全模型,Play完整性验证同理。
- 安卓设备可以通过低成本的硬件故障注入攻击 (https://www.da.vidbuchanan.co.uk/blog/dram-emfi.html) 被root。
- 现有设备的硬件漏洞无法修补(这里有些细微之处,稍后讨论)。
- 因此,**安卓平台上的C2PA已被破坏,且无法被现实地修补**。
- 以上所述均非“0day”,且已于至少90天前报告给相关方(但任何头脑清醒的人,包括许多已经预见的人,本应预见到这一点)。
但是等等,还有更多!部分由于大型语言模型的影响,root权限提升漏洞的出现速度超过了谷歌推送补丁的速度。截至发稿时,**针对完全更新的谷歌Pixel设备的“一键式root漏洞利用” (https://github.com/alex193a/Root-My-Pixel) 已在野外存在**。利用这些漏洞,*任何人*无需硬件攻击即可制作C2PA伪造品。本文稍后将提供操作说明。
如你所见,我在这里聚焦于安卓平台。我将让谷歌解释原因 (https://blog.google/security/pixel-android-trusted-images-c2pa-content-credentials/):
> Pixel相机应用**达到了2级保证** (https://github.com/c2pa-org/conformance-public/blob/main/conforming-products/conforming-products-list.json),这是目前C2PA合规计划 (https://github.com/c2pa-org/conformance-public/blob/main/docs/current/C2PA%20Generator%20Product%20Security%20Requirements.pdf) 定义的最高安全评级。移动应用的2级保证目前**仅在安卓平台上可能实现**。
也就是说,我正在攻击“最强”的实现,只是为了说明问题。这里有一张由AI生成的低质量图片,C2PA声称这是来自Pixel相机应用的真实未编辑照片:(悬停取消模糊,点击“验证”它)
[](https://verify.contentauthenticity.org/?source=https%3A%2Fretr0.id%2Fstuff%2Fnocors%2Fblog_frog.jpg)
还有,这是一个YouTube视频 (https://www.youtube.com/watch?v=o6SPloDkUy0),其信息框显示是“用相机拍摄的”(剧透:它不是)。
顺便说一句,有传言 (https://www.macrumors.com/2026/08/10/ios-27-apple-reference-image/) 称苹果正在开发自己的媒体来源验证解决方案,但目前尚未实现。等它出现时,我会告诉你我的看法。我猜他们的垂直整合将给他们带来显著优势,这可能会将最易实现的攻击转移到光学领域(拍摄屏幕照片等)。
无论如何,让我们深入细节。
## Root权限提升漏洞如何破坏“硬件支持的”密钥认证?(https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#how-does-root-lpe-break-quothardwarebackedquot-key-attestation)
认证只证明某些事情,包括:
- 引导程序是否锁定。
- AVB (https://source.android.com/docs/security/features/verifiedboot/avb) 密钥是否为供应商自有。
- 设备是否运行最新的安全更新。
“正常”的root安卓设备方式是解锁引导程序并刷入修改过的固件镜像,这会强制设备恢复出厂设置。认证会标记引导程序已解锁,谷歌将拒绝向你的设备提供C2PA密钥(Netflix也不会为你提供高分辨率内容,你的银行应用无法使用,等等)。
到目前为止还好(如果你喜欢那种东西的话)。
然而,如果你通过漏洞利用root设备,认证机制无法可靠地“察觉”。引导程序仍然锁定,AVB密钥未修改,设备仍然运行着它最初启动时的安全更新。现在谷歌的服务器会很乐意地为一台被入侵的设备提供密钥。
C2PA密钥仍然受到硬件安全保护,位于StrongBox(较新的Pixel设备中的Titan M2)内。这*确实*阻止了攻击者即使拥有root权限也无法提取密钥。然而,**攻击者不需要原始密钥材料!** 作为root用户,他们可以要求StrongBox使用这些密钥对任何他们喜欢的数据进行签名,从而生成C2PA伪造品(或解密你的Signal收件箱,以及其他坏事)。
认证机制设计背后的理论是,已知的软件权限提升漏洞应该被修补,然后验证方(验证认证报告的实体)可以要求用户安装更新,这样更新后的设备就无法再被权限提升了。
`CVE-2026-43499` (https://nvd.nist.gov/vuln/detail/CVE-2026-43499) 证明了及时的补丁并非总是可用,但让我们善意地假设未修补漏洞的公开利用永远不会存在。这里仍然存在两个问题:
1. 任何拥有中等资金支持的实体,从政府到移动取证公司,都可以建立私有漏洞利用的储备库(他们也确实这么做了)。这些正是你*不希望*伪造C2PA签名的群体。
2. 低成本的硬件漏洞利用存在,无论补丁级别如何。
## 我是如何签署演示图像和视频的?(https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#how-did-i-sign-the-demo-image-and-video)
最初,我使用了一种硬件攻击。这是我早期研究的延续:Can You Get Root With Only a Cigarette Lighter? (https://www.da.vidbuchanan.co.uk/blog/dram-emfi.html)
我*原本*打算在这里深入探讨,但坦率地说,纯软件漏洞利用 (https://github.com/alex193a/Root-My-Pixel) 路径 (https://github.com/BuSung-dev/Root-My-Galaxy) 抢了我的风头。当它们存在时,软件漏洞利用*方便得多*,所以我会把完整的硬件细节留到以后再说。这并不急,因为硬件漏洞利用在很大程度上无法被修补。
如果你想今天重现我的发现,我推荐使用Root My Pixel (https://github.com/alex193a/Root-My-Pixel) 工具。(注意:虽然它目前支持大多数Pixel设备最新的八月安全更新,但你需要从`main`分支构建以启用该支持。我已在Pixel 8a和9a上亲自测试过。)
获得root权限后,其余的攻击就只是常规操作了。我制作了一个工具来简化此过程:keystork (https://github.com/DavidBuchanan314/keystork)。Keystork具有客户端/服务器架构,允许客户端代码模拟任何已安装的应用程序,对密钥存储API执行任意操作。“服务器”(`keystorkd`)在root设备上运行,客户端可以是任何能使用有线协议通信的程序(默认通过ADB转发的unix域套接字传输)。参考客户端是一个Python库及相应的CLI界面,但理论上安卓应用可以与之通信,Shizuku (https://github.com/rikkaapps/shizuku) 风格(尽管你可能需要先构建一个认证/权限层)。
这是一个针对Pixel相机应用的“签署任何图像”PoC脚本:https://gist.github.com/DavidBuchanan314/fa0ffdaaaa31594e6a511118c1cea1e0
虽然软件漏洞利用可以也将会(最终)被修补,但硬件漏洞利用是永久的。或者真的如此?
## 硬件攻击可以缓解吗?(https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#can-the-hardware-attacks-be-mitigated)
理论上可以,实际上不行。
我的初始策略(翻转PTE中的位)在今天的Pixel设备上仍然有效。然而,它在三星设备上无效!
我在三星A07设备上做了一些初始测试(因为它们便宜)。该漏洞利用当时有效,但经过一次安全更新后就停止工作了(我认为时间点是巧合)。该更新启用了三星的“RKP (https://docs.samsungknox.com/admin/fundamentals/whitepaper/samsung-knox-mobile-security/system-security/real-time-kernel-protection/)”缓解措施(实时内核保护,*不要*与远程密钥配置混淆……)。
除其他事项外,三星的缓解措施使用EL2管理程序对某些内存区域施加额外保护(有点像微软的HVCI (https://connormcgarr.github.io/hvci/))。我*仍然*可以使用硬件漏洞利用来翻转PTE中的位,但即使我通过故障注入将PTE映射到用户空间,EL2也不会允许我覆盖它(这是我最初设计的漏洞利用的关键部分)。
我有几个计划来绕过三星缓解措施的替代策略,但我尚未着手实现它们。我的一个替代策略甚至能在硬件内存加密存在的情况下工作。一旦它能工作,我想把这个策略打包成一个“通用安卓硬件root”工具——敬请关注?(我也想破解HVCI来捣乱反作弊,也敬请关注。)
在硬件层面,存在多种将外部DRAM视为完全不可信的解决方案,从而在理论上缓解任何类型的总线故障攻击。例如Intel MEE (https://eprint.iacr.org/2016/204.pdf),以及苹果的SEP内存保护引擎 (https://support.apple.com/en-gb/guide/security/sec59b0b31ff/web#secb8d5e5708)。然而,这些解决方案的性能不足以现实地运行整个安卓Linux内核(这就是为什么苹果只用它来保护SEP而非主应用处理器,英特尔在较新的SGX版本中完全放弃了该功能,导致了诸如Battering RAM (https://batteringram.eu/) 之类的攻击)。
即使有最好的硬件级缓解措施,修复安卓上的C2PA也将涉及完全重新架构软件栈。整个图像处理管道,包括所有花哨的AI功能,都需要在一个具有强硬件内存保护的安全飞地内运行。
我认为谷歌不会做所有这些,这可能就是为什么他们以“无法修复(不可行)”的状态关闭了我的报告。做所有这些重新架构是没有意义的,因为你仍然无法阻止“拍摄屏幕照片”类型的攻击。
顺便说一句,尽管报告被标记为WONTFIX,谷歌选择为我的提交支付了7500美元赏金:
> 感谢您提交报告。虽然硬件故障注入和侧信道攻击不在我们漏洞赏金计划的范围内,但我们的安全团队认为您的发现很有价值,您提供的数据将帮助我们改进产品的未来版本。
我没期望得到赏金(我知道它正式超出范围),所以这是一个不错的惊喜。它能覆盖我在研究中损坏的所有设备。但值得注意的是:
对我来说,最明显的C2PA攻击向量超出了谷歌VRP的范围。因此,**VRP并未有意义地保护安卓C2PA实现。**
## 影响范围有多大?(https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#how-broad-is-the-impact)
我在这里一直关注Pixel相机应用,但安卓上还有其他几个“C2PA相机”应用。我调查过的所有应用都依赖密钥认证或Play完整性验证来保证安全。它们都以同样的方式被破坏,只是不限于谷歌Pixel设备。这意味着你不需要root Pixel设备,你可以选择安卓生态系统中整个最便宜、最容易受攻击的设备来运行你的漏洞利用。
它们都是谷歌关于其平台安全性有效性的误导性营销的受害者。你可以在这里 (https://github.com/c2pa-org/conformance-public/blob/main/conforming-products/conforming-products-list.json) 找到一份“合规”C2PA实现的完整列表(所有在其`attestationMethods`列表中包含`Android_KeyAttestation`或`Google_PlayIntegrity`的都可能易受攻击)。
在C2PA之外,我一直在用我的硬件故障注入策略root各种安卓设备,包括亚马逊Fire TV棒和Meta Quest 3s VR头显(同样,我可能会在以后写更多关于这个的内容!)。
旁注:Meta在本月初已经修补了Quest头显上的`CVE-2026-43499`权限提升漏洞,以阻止人们在VR游戏中作弊。对我来说,谷歌甚至还没有为其旗舰Pixel设备发布补丁,这绝对是疯狂的。
## 致谢 (https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#thanks)
虽然我最近涉足了C2PA生态系统,但Hacker Factor (https://www.hackerfactor.com/blog/) 的Neal Krawetz博士多年来一直在为此敲响警钟。他的文章是我接触这个话题的入门,他与我讨论事情非常有帮助,并帮助协调漏洞披露。
你可以在这里 (https://www.hackerfactor.com/blog/index.php?/archives/1102-C2PA-and-Pixel-Glitter-Milk.html) 阅读他对这些漏洞的看法。
也要感谢来源与真实性标准评估工作组 (https://cisa.umbc.edu/pasawg/) (PASAWG),他们也在研究C2PA的有效性。
## 哦,还有一件事……(https://www.da.vidbuchanan.co.uk/blog/android-c2pa.html#oh-and-one-more-thing)
在准备我的PoC发布时,我有了一个有趣的“如果……会怎样?”的想法。顺着这个思路,我发现了一个私钥泄露漏洞。我两天前报告给了谷歌,他们似乎昨天就修补了(这就是为什么我更喜欢硬件攻击,修补会破坏乐趣)。我可能会在未来写更多关于它的内容。
这里我会贴上Pixel相机C2PA的私钥和相应的证书链,如果我不是胆小鬼的话。但我决定不这样做。如果你是想看一眼的记者,请告诉我。
我猜谷歌现在已经吊销了这个特定的密钥(我在报告中包含了它)。然而,大多数C2PA验证工具并不检查吊销状态。我相信他们很快也会修复这个问题。
所有博客内容由thinking meat (https://web.mit.edu/people/dpolicar/writing/prose/text/thinkingMeat.html) 制作,除非另有说明。
主页 (https://www.da.vidbuchanan.co.uk/) - 博客索引 (https://www.da.vidbuchanan.co.uk/blog/) - RSS (https://www.da.vidbuchanan.co.uk/blog/rss.xml)
相似文章
网络安全AI:人形机器人作为攻击向量
本文对宇树G1人形机器人进行了系统性安全评估,揭示了多项关键漏洞,包括BLE配置协议漏洞、硬编码AES密钥,以及一个能够执行数据窃取和进攻性操作的驻留网络安全AI代理。文章主张,随着人形机器人进入关键基础设施,应部署自适应CAI驱动的防御措施。
AI Agent 具有 Root 权限
本文警告了在AI代理中使用非沙盒化的MCP服务器的安全风险,这些服务器可以以用户级权限执行,并可能暴露敏感数据和系统。
从分析师视角绕过 Android 硬件认证
Quarkslab 的一篇技术深度文章解释了 Android 硬件认证的工作原理,并演示了一种基于 Frida 的中继绕过方法,将认证请求重定向到一台干净的设备,使分析师能够使用已 root 的手机而无需破坏安全硬件。文章附带可复现的配套仓库,包含演示和后端。
ATM漏洞揭示软件供应链中的关键弱点
安全研究员 Matt Burch 披露了 CryptoPro Secure Disk 软件中的九个漏洞,这些漏洞可能绕过加密,揭示了影响ATM及其他行业的软件供应链中的关键弱点。
传递通行密钥:无密码认证的新攻击面
这项Unit 42研究披露了三种针对无密码认证的新攻击,利用了谷歌的同步通行密钥生态系统,展示了恶意软件如何接管受通行密钥保护的账户、绕过用户验证并提取私钥。