国际特赦组织安全实验室与国际特赦组织欧洲区域办事处合作,发现了一起新的案件,该案件中有人滥用 Cellebrite 产品侵入了塞尔维亚一名青年活动家的手机。此次攻击与我们此前在 2024 年 12 月发布的报告《数字监狱》中记录的攻击形式非常相似。这一新案例进一步证明,尽管塞尔维亚国内外普遍呼吁改革,且 Cellebrite 已宣布对其产品滥用情况展开调查,但塞尔维亚当局在我们发布报告后仍在继续对民间社会进行监视。
虽然这篇博文没有记录,但国际特赦组织还发现了至少两起滥用 Cellebrite 针对公民社会的案例(超出了报告中提到的案例),这表明这种做法仍然很普遍,塞尔维亚安全信息局(Bezbedonosno-informativna agencija - BIA)和塞尔维亚安全部门仍然相信他们可以继续使用这种压迫手段而不受惩罚。
Cellebrite在2025 年 2 月 25 日发布的一份声明中宣布,已暂停塞尔维亚“相关客户”使用其产品。此前,国际特赦组织于 2024 年 12 月发布报告,记录了塞尔维亚当局广泛滥用 Cellebrite 技术的情况。最新发现的进一步滥用行为,使得此次暂停使用成为阻止该公司产品持续非法滥用的必要且关键的第一步。
针对 Android USB 内核驱动程序的零日漏洞被发现
这篇技术博客文章详细分析了一名抗议学生的安卓手机是如何被 Cellebrite 开发的针对安卓 USB 驱动程序的复杂零日漏洞链利用并解锁的。国际特赦组织于 2024 年中期在另一起案件中首次发现了 Cellebrite USB 漏洞的踪迹。
这些最新发现表明,即使在滥用证据广泛公布之后,Cellebrite 先进的手机提取工具仍持续被滥用,造成持续危害。由于本研究中发现的漏洞针对的是核心 Linux 内核 USB 驱动程序,因此该漏洞并不局限于特定设备或供应商,可能影响超过十亿台 Android 设备。
2024年,安全实验室与包括谷歌威胁分析小组在内的业界合作伙伴分享了有关此零日漏洞链的技术证据。这些线索使谷歌安全研究人员能够识别出至少三个可能被利用于此Cellebrite漏洞链的零日漏洞。第一个漏洞是CVE-2024-53104,它存在于USB视频类(UVC)驱动程序中,存在越界写入漏洞,已在2025年2月的Android安全公告中得到修补。
其他漏洞 CVE-2024-53197 和 CVE-2024-50302 已在 Linux 内核上游被修补,但尚未被纳入 Android 安全公告。下文第 3 部分将分享对这些漏洞和漏洞的初步技术分析。
国际特赦组织感谢此次活动针对的学生活动家分享他的故事,并感谢所有支持这项研究的合作伙伴,包括巴尔干调查和报道网络 (BIRN)和贝尔格莱德的SHARE 基金会。
国际特赦组织特别感谢谷歌威胁分析小组的 Benoît Sevens 对本次调查的宝贵贡献,以及他识别出此次攻击中被利用的底层 USB 漏洞的工作。安全实验室也感谢 Android 安全与隐私团队积极参与解决影响公民社会的数字安全风险。
1. 发现高度复杂的 USB 零日漏洞利用链
情况下被访问或提取。国际特赦组织对这些案件的取证研究使我们能够详细了解移动取证产品(例如由Cellebrite和类似公司开发的产品)所使用的技术方法。
在某些情况下,此类研究还可以识别出正在被积极滥用以针对公民社会并造成相关负面人权影响的软件漏洞。修补这些漏洞可以减少持续的危害,同时等待移动取证供应商采取行动,限制其产品的非法使用。
国际特赦组织此前曾记录过,2023 年 12 月,针对高通安卓设备的零日漏洞 (CVE-2024-43047) 被用于从一名塞尔维亚活动人士的手机中提取数据。安全实验室收集的证据使谷歌 Project Zero 能够识别底层内核漏洞,高通已于2024 年 10 月修补了该漏洞。
本技术报告描述了一个全新的 Cellebrite 零日漏洞链,该漏洞链被滥用来秘密解锁一名塞尔维亚学生活动人士的手机。国际特赦组织安全实验室首次发现 Cellebrite USB 零日漏洞链的证据是在 2024 年中期,该漏洞链在塞尔维亚境外的另一起案件中被用于解锁一台安卓设备。
该漏洞利用程序针对 Linux 内核 USB 驱动程序,使拥有锁定 Android 设备物理访问权限的 Cellebrite 客户能够绕过 Android 手机的锁屏,获得设备的访问权限。由于该漏洞利用程序针对的是核心 Linux 内核 USB 驱动程序,因此其影响范围并不局限于特定设备或厂商,而是可能影响到非常广泛的设备。同样的漏洞也可能使 Linux 计算机和 Linux 嵌入式设备面临物理攻击,尽管目前尚无证据表明该漏洞利用链是专门针对非 Android Linux 设备的。
此案例凸显了现实世界中攻击者如何利用 Android 的 USB 攻击面,并利用 Linux 内核支持的众多旧版 USB 内核驱动程序。Android 供应商必须紧急增强防御性安全功能,以减轻来自不受信任的 USB 连接到锁定设备的威胁。
Android 厂商将在未来几个月内提供针对此漏洞链中其他漏洞的上游补丁。国际特赦组织现发布这项研究,旨在提高公众对此类 USB 攻击面在野外如何被利用的认识。
由于本博客中描述的攻击需要对设备进行物理访问并进行深入的工程工作,因此此漏洞被重复利用的风险相对较低。但是,为了降低此风险,我们将暂停分享已发现漏洞的技术细节,直至所有主要 Android 供应商发布安全补丁。目前,我们也不会披露所有相关的崩溃日志和漏洞利用痕迹。
这些发现也凸显了设备供应商和行业研究人员与民间社会密切合作的价值,他们应识别并修复影响活动家和记者的漏洞,从而在此过程中保护所有用户。在过去六个月中,通过与公民实验室和国际特赦组织的民间社会安全研究人员合作,至少发现了六个零日漏洞(这些漏洞已被广泛利用) 。
2. 数字取证工具如何被用来对付塞尔维亚的公民社会
2024年12月16日,国际特赦组织安全实验室和欧洲区域办事处发布了《数字监狱:塞尔维亚公民社会的监视与压制》https://www.amnesty.org/en/documents/eur70/8813/2024/en/。报告记录了塞尔维亚警方和情报部门如何利用先进的手机间谍软件和手机取证产品,在秘密监视活动中非法瞄准记者、环保人士和其他批评政府政策的人士。
最具爆炸性的发现之一是,以色列公司 Cellebrite 生产的移动取证产品被广泛滥用,用于从记者和活动人士的移动设备中提取数据。针对我们的发现,Cellebrite 声明:“我们正在调查本报告中的指控。如果指控属实,我们准备采取适当的制裁措施,包括终止 Cellebrite 与任何相关机构的合作关系。”
该报告也在塞尔维亚国内引发强烈反响。一个由10个民间社会组织组成的协会以非法监控为由,对警方和情报部门提起刑事指控,并正式要求监察员办公室和数据保护专员进行单独调查。塞尔维亚高科技犯罪检察官于2025年1月正式立案。
2025年1月,即报告发布一个月后,安全实验室收到一项请求,要求测试一名青年抗议者的设备。该抗议者于2024年12月25日在贝尔格莱德爆发大规模学生抗议活动后被塞尔维亚安全信息局(Bezbedonosno-informativna agencija,简称BIA)逮捕并拘留。该抗议者的被捕情况以及BIA官员的行为与我们在12月报告中记录的针对抗议者的作案手法高度吻合。1月份对该设备进行的取证调查证实,该学生活动人士的手机使用了Cellebrite软件。逮捕抗议者以及其手机遭到攻击的详情将在第3部分中介绍。
在这篇博文中,我们概述了逮捕和针对学生抗议者的事件。与我们12月报告中记录的案例一样,Cellebrite UFED 未经该活动人士知情或同意,且在法律认可的调查范围之外,就被用在他的手机上。看似例行公事地使用 Cellebrite 软件来对付行使言论自由与和平集会权利的人们,这绝对不可能是合法目的,因此违反了人权法。(有关塞尔维亚数字监控法律框架的更详细分析,以及使用 Cellebrite 软件对付公民社会对人权的影响,请参阅《数字监狱》第7章和第8.2章)。
3. 抗议期间学生活动人士被便衣警察拘留
“维德兰”(为保护学生的安全、隐私和保密,姓名已更改)是一名23岁的学生活动家,经常参与贝尔格莱德正在进行的学生抗议活动。尽管他与几个青年组织有松散的联系,但他认为自己是自2024年11月以来席卷塞尔维亚的更广泛的和平学生抗议运动的一部分。
2024 年 12 月 25 日,“维德兰”想参加由执政的塞尔维亚进步党在贝尔格莱德组织的“与年轻人的公开会议”。
在抗议点入口处,“韦德兰”把他的呜呜祖拉留给了保安。过了一会儿(大约中欧时间17:30),七名便衣男子接近他,强行将他带上车。尽管他要求他们表明身份,但他们却拒不作证,而且行为粗暴。他们质问他为何出现在这里,为什么带着呜呜祖拉,并要求他出示手机。他拒绝了,随后被送往贝尔格莱德萨瓦马拉(Sava Mala)的一个警察局。
“韦德兰”告诉国际特赦组织,当地时间18:30左右,他一进入警察局就关掉了手机,并把它交给了警员。他被带到一楼的一间办公室,在接下来的六个小时里,他被四名身着便衣的男子盘问,而这些男子从未自我介绍过。
他的手机于凌晨 00:45 左右被归还,但已关机。
3.1 Cellebrite 漏洞用于解锁手机,然后尝试感染 Android 应用程序
国际特赦组织安全实验室对“维德兰”的三星 Galaxy A32 进行了法医分析,以检查该设备在“维德兰”被拘留在警察局期间是否被篡改。
取证分析发现了明显的漏洞利用证据,国际特赦组织可以确信地将其归咎于使用 Cellebrite 的 UFED 产品。日志还显示,Cellebrite 产品使当局成功获得手机的特权 root 访问权限并解锁设备。
时间戳(本地时间) | 事件 |
2024年12月25日 18:36:10 | “维德兰”关掉了手机。 |
2024年12月25日 20:01:14 | 在警察局第一次开机。 |
2024年12月25日 20:22:13 | 手机在警察局再次开机 |
2024年12月25日 20:24:37 | 模拟 USB 设备(与 Cellebrite Turbo Link一致)连接到手机。 |
2024年12月25日 20:28:38 | 成功利用 Cellebrite 漏洞并以root用户身份实现代码执行的取证痕迹。 |
2024年12月25日 20:30:11 | 设备上 Cellebrite 活动的额外痕迹。 |
2024年12月25日 20:37:15 | 痕迹显示手机屏幕已解锁。 |
2024年12月25日 20:37:59 | 通过 Android shell 触发手机重启 |
表 1 – 抗议者 Android 设备上 Cellebrite 使用情况的取证痕迹
国际特赦组织发现证据表明,塞尔维亚当局在使用 Cellebrite 解锁手机后试图安装一个未知的 Android 应用程序。
由于取证日志有限,无法确定当局试图安装的具体安卓应用。然而,此次尝试在使用 Cellebrite 解锁后秘密安装安卓应用的行为与国际特赦组织此前记录的NoviSpy间谍软件感染案例相符。
时间戳(本地时间) | 事件 |
2024年12月25日 20:42:54 | 痕迹显示手机在重启 5 分钟后再次开机 |
2024年12月25日 20:55:49 | 手机上打开了 Google Chrome 应用 |
2024年12月25日 20:56:03 | 已授予使用 Chrome 安装 APK 的权限 |
2024年12月25日 20:56:22 | Android 软件包安装程序已打开,提示生物识别/PIN 码。应用安装似乎已被阻止。 |
2024年12月25日 20:58:33 | Samsung My Files 应用程序中的活动痕迹可能表明攻击者正在清理。 |
2024年12月25日 21:13:18 | 取证痕迹显示,存在额外的 Cellebrite 漏洞利用和以root用户身份执行代码的情况。这可能是为了重新运行其他 Cellebrite 工作流程,例如执行“首次解锁后”提取流程。 |
表 2 – 使用 Cellebrite 解锁后尝试安装侧载 Android 软件包
在安装 APK 失败后,取证证据表明有人试图利用 Cellebrite UFED 漏洞利用手机。这些痕迹始于 Cellebrite 的Falcon工具被复制到手机上。这可能表明有人试图利用解锁流程来利用手机。
时间戳(本地时间) | 事件 |
2024年12月25日 21:26:17 | 手机重启 |
2024年12月25日 21:31:38 | ADB shell 用户将Cellebrite falcon二进制文件复制到手机上 |
2024年12月25日 21:38:55 | 尝试从frontswap_tmem_e+0xc8/0x1b0中的 Linux Transcendent Memory 功能释放内存时出现内核 OOPS 。 |
2024年12月25日 21:47:01 | 处理 USB HID 事件时内核出现 OOPS。 |
2024年12月25日 21:50:03 | 成功利用 Cellebrite 并以root用户身份执行代码的取证痕迹。 |
2024年12月25日 21:53:59 | Cellebrite UFED 使用root权限删除文件的其他痕迹。 |
2024年12月25日 21:58:59 | 跟踪设备上运行的各种 shell 命令(包括find、grep ) 。 |
表 3 – 涉及 Cellebrite falcon 二进制文件的其他利用尝试痕迹
使用 Cellebrite 的falcon二进制文件进行的第二轮利用似乎取得了成功,因为在设备上运行了各种后利用命令。目前尚不清楚与 Linux Transcendent Memory代码相关的日志是与该驱动程序的利用有关,还是与内核内存损坏无关的产物。
3.2 Android USB 零日漏洞利用来解锁三星 Android 手机
上表概述了设备上发现的一些漏洞利用痕迹。由于缺乏详细的设备日志记录,确定内存损坏攻击中具体利用的漏洞通常颇具挑战性,尤其是在事后。
然而,在本案中,国际特赦组织高度确信,以下取证日志提供了 Cellebrite USB 漏洞利用链的明确证据。虽然我们呈现的是最近塞尔维亚案件的具体日志,但观察到的模式(包括相关崩溃)与过去一年发现的类似案件一致。
此次攻击涉及各种 USB 外设的连接。“视频设备”在漏洞利用的初始阶段就已连接。其他设备显示重复连接,表明需要反复进行漏洞利用,以窃取内核内存并进行内核内存清理。
目前尚不清楚以下列出的每个设备是否都属于成功的漏洞利用链。由于攻击发生在 Before-First-Unlock 之前,攻击者可能需要主动对内核进行指纹识别,以确定哪些漏洞利用链(如果有)可能兼容:
事件 | 笔记 |
USB 集线器已连接 | |
USB“HID 设备”已连接 | VID:0x045e PID:0x076c(设备:Comfort Mouse 4500)。30秒内重复连接。 |
USB“视频设备”已连接 | VID:0x04f2 PID:0xb071(设备:UVC 网络摄像头/Chicony CNF7129)。 |
USB HID 触摸板已连接 | VID:0x1130 PID:0x3101(设备:Anton Touch Pad)。30秒内重复连接。 |
USB“声音设备”已连接 | VID:0x041e PID:0x3000(设备:SoundBlaster Extigy)。30秒内重复连接。 |
USB“声音设备”已连接 | VID:0x0763 PID:0x2012。(设备:M-Audio Fast Track Pro)。30秒内重复连接 |
成功以 root 身份执行代码 | 最后一次“HID 设备”连接后约 10 秒观察到代码执行 |
表 4
所有连接的 USB 设备似乎都通过 Cellebrite 硬件加密狗在软件中模拟。Cellebrite 的 Premium UFED 或 Inseyets 产品支持设备解锁,并使用单独的“Turbo Link”适配器,该适配器可能被用于此类基于硬件的攻击。
表中列出的设备名称(例如“ Video Device”或“ Sound Device”)是相应 USB 设备描述符中指定的实际产品名称。此外,所有检测到的外设的 USB 设备版本号均统一设置为常量“12.34”,这强烈表明它们是模拟设备而非真正的硬件。
USBdeviceattached: vidpid04f2:b071mfg/product/ver/serialVideo/VideoDevice/12.34/00001USBdeviceattached: vidpid041e:3000mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid0763:2012mfg/product/ver/serialSound/SoundDevice/12.34/00001USBdeviceattached: vidpid045e:076cmfg/product/ver/serialhid/HIDDevice/12.34/fedcba9876543210
HID USB 设备的序列号设置为33117733,这再次表明设备 ID 和序列号是作为漏洞利用尝试的一部分模拟的,而不是合法的 USB 设备。
<6>[ 350.950690] (1)[159:kworker/1:1]usb 1-1.1: udev->lpm_capable=0<6>[ 350.950737] (1)[159:kworker/1:1]usb 1-1.1: usb_enumerate_device<6>[ 350.981150] (1)[159:kworker/1:1]usb 1-1.1: vid:0x45e, pid:0x76c<6>[ 350.981182] (1)[159:kworker/1:1]usb 1-1.1: product:HID Device, manufacturer:hid<6>[ 350.981196] (1)[159:kworker/1:1]usb 1-1.1: New USB device found, idVendor=045e, idProduct=076c<6>[ 350.981205] (1)[159:kworker/1:1]usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3<6>[ 350.981214] (1)[159:kworker/1:1]usb 1-1.1: Product: HID Device<6>[ 350.981222] (1)[159:kworker/1:1]usb 1-1.1: Manufacturer: hid<6>[ 350.981230] (1)[159:kworker/1:1]usb 1-1.1: SerialNumber:33117733
Linux 内核 USB 子系统使用 USB 设备描述符中提供的 USB 设备 ID 和供应商 ID 来确定哪个内核驱动程序将处理连接的 USB 设备。遗憾的是,由于受支持的 USB 设备种类繁多,并且需要兼容旧版硬件和不兼容的实现,Linux USB 堆栈的攻击面非常大。这包括大量驱动程序和未经测试的代码路径,本地攻击者可能会利用这些路径。
为了更好地理解 Cellebrite 漏洞利用链,我们现在将依次分析每个模拟 USB 设备,识别可能在攻击过程中被利用的相应内核驱动程序。
“视频设备” (0xb071)
视频设备USB 设备指定了一个 USB ID 对(VID: 0x04f2 PID: 0xb071),该 ID 对 注册为 Chicony CNF7129 UVC 网络摄像头。此产品 ID 由 Linux USB 视频类 (UVC) 驱动程序处理。
这个特定的 USB 设备 ID 可以访问一个自定义的内核代码路径,称为“ UVC_QUIRK_RESTRICT_FRAME_RATE”的怪癖。值得注意的是,这是唯一一个触发此怪癖的 USB 设备 ID,这表明该漏洞利用的目标是该特定怪癖代码中引入的漏洞。处理此 USB 设备的怪癖(或非标准编码路径)于 2010 年推出,距今已有近 15 年。
/* Chicony CNF7129 (Asus EEE 100HE) */{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x04f2, .idProduct = 0xb071, .bInterfaceClass = USB_CLASS_VIDEO, .bInterfaceSubClass = 1, .bInterfaceProtocol = 0, .driver_info = UVC_INFO_QUIRK(UVC_QUIRK_RESTRICT_FRAME_RATE) },
这些工件将目标缩小到内核代码中一小段,这很可能引入一个可利用的内存损坏漏洞。谷歌威胁分析小组的 Benoît Sevens 发现,在解析u类型的帧时,此代码路径允许越界写入。该漏洞UVC_VS_UNDEFINED已于2024 年 11 月在 Linux 内核上游修补,并被分配了 CVE-2024-53104。该补丁包含在2025 年 2 月的 Android 安全公告中,旨在保护所有已修补的设备免受利用整个 USB 漏洞链执行代码的攻击。vc_parse_format()
“声音设备 ”(0x3000)
下一个 USB 设备是“声音设备”(VID:0x041e,PID:0x3000),它模拟的是 Creative Extigy USB 声卡。处理该设备的 Linux ALSA USB 声音驱动程序也有一个怪癖,它会加载特定代码来处理一组非标准 Extigy 和 Mbox 声卡(包括具有此特定设备 ID 的 Extigy 设备)的初始化。
int snd_usb_apply_boot_quirk(struct usb_device *dev,struct usb_interface *intf,conststruct snd_usb_audio_quirk *quirk,unsignedintid){switch (id) {case USB_ID(0x041e, 0x3000):/* SB Extigy needs special boot-up sequence *//* if more models come, this will go to the quirk list. */return snd_usb_extigy_boot_quirk(dev, intf);
“ ”函数中的怪异代码snd_usb_extigy_boot_quirk会在其自定义设备初始化代码期间重新加载并复制 USB 设备描述符。恶意模拟的 Extigy 或 Mbox 设备可以通过在“ usb_get_descriptor()”调用期间提供无效的 USB 设备描述符来利用此怪异代码,其中描述符的值bNumConfigurations超过了 USB 设备在“ usb_get_configuration()”中首次连接时发送的初始值。
static int snd_usb_extigy_boot_quirk(struct usb_device *dev, struct usb_interface *intf){--- dev_dbg(&dev->dev, "sending Extigy boot sequence...n");/* Send message to force it to reconnect with full interface. */ err = snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev,0),0x10, 0x43, 0x0001, 0x000a, NULL, 0);if (err < 0) dev_dbg(&dev->dev, "error sending boot message: %dn", err); err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, sizeof(dev->descriptor)); config = dev->actconfig;if (err < 0) dev_dbg(&dev->dev, "error usb_get_descriptor: %dn", err);
谷歌威胁分析小组的 Benoît Sevens 发现,此漏洞稍后可能导致越界访问,例如,usb_destroy_configuration如果设备的“ dev->config”成员被破坏,则再次允许远程代码执行。该漏洞位于 quirk 代码中,已于 2024 年 11 月被上游修补,并被分配了 CVE-2024-53197。
2号“声音设备”(0x2012)
第二个“声音设备”(VID:0x0763 PID:0x2012)在加载USB设备时,也会应用特定的怪异代码fasttrackpro_skip_setting_quirk()。该设备在恶意Extigy设备加载后立即加载。
/* fasttrackpro usb: skip altsets incompatible with device_setup */if (chip->usb_id == USB_ID(0x0763, 0x2012))return fasttrackpro_skip_setting_quirk(chip, iface, altno);
有趣的是,在利用过程中看到的 USB 设备连接日志表明,恶意 Extigy 设备的 USB 设备描述符在内核中加载时显然被重新映射为 Fasttrack Pro 设备。
时间戳 | 序列号 | 行动 | 产品名称 | 产品 | 设备路径 |
20:26:24.932 | 6405 | 添加 | Extigy声卡 | 41e/3000/1234 | /1-1/1-1.4/1-1.4:1.0 |
20:26:24.944 | 6406 | 添加 | FastTrackPro声卡 | 763/2012/1234 | /1-1/1-1.4/1-1.4:1.1 |
20:26:25.176 | 6408 | 消除 | FastTrackPro声卡 | 763/2012/1234 | /1-1/1-1.4/1-1.4:1.0 |
20:26:25.177 | 6409 | 消除 | FastTrackPro声卡 | 763/2012/1234 | /1-1/1-1.4/1-1.4:1.1 |
标题:连接到手机时,Extigy 声卡设备描述符损坏。
设备路径包括 USB 总线号和 USB 设备号或 DEVNUM,指示内核用于与设备通信的确切总线和路径。
在上表中,我们可以看到添加了两个不同的声卡设备(0x3000和0x2012)。大约 0.2 秒后,内核日志显示两个 0x2012 设备被移除。表中的第一条和第三条条目均显示相同的设备路径“ ”。这些日志表明,攻击者能够利用 CVE-2024-53197 漏洞,成功地用包含 0x2012 设备的任意 USB 描述符1-1.4:1.0覆盖原始设备描述符0x3000 。
目前尚不清楚为何选择 FastTrackPro (0x2012) 设备作为攻击目标。攻击者或许能够利用新 FastTrackPro 的属性来确认内存损坏原语 CVE-2024-53197 是否在此设备上有效。
Anton 触摸板设备 (0x3101)
下一个连接的设备(我们没有观察到攻击者提供的设备名称)模拟了一个多点触控 HID USB 输入设备。它在 Linux 内核中被标识为 Anton Touchpad。该设备的代码是11 年前引入的。
#define USB_VENDOR_ID_ANTON 0x1130#define USB_DEVICE_ID_ANTON_TOUCH_PAD 0x3101
/* Anton devices */ { .driver_data = MT_CLS_EXPORT_ALL_INPUTS, MT_USB_DEVICE(USB_VENDOR_ID_ANTON, USB_DEVICE_ID_ANTON_TOUCH_PAD) },
然后,驱动程序使用“MT_CLS_EXPORT_ALL_INPUTS”选项为设备加载两个怪癖,同时设置“export_all_inputs”标志。
{ .name = MT_CLS_EXPORT_ALL_INPUTS, .quirks = MT_QUIRK_ALWAYS_VALID | MT_QUIRK_CONTACT_CNT_ACCURATE, .export_all_inputs = true },
Benoît Sevens 发现此漏洞和设备配置可利用特制的 HID 报告将未初始化的内核内存泄露给本地攻击者。通过在分配 HID 报告缓冲区时将其清零,可以缓解此内存泄露问题。此漏洞已修补为CVE-2024-50302。
“HID设备”(0x76c)
在利用流程中连接的最后一个 USB 设备是“HID 设备”(VID:0x045e PID:0x076c),它模拟了 Microsoft Comfort Mouse 4500。您现在可能已经猜到了,该设备也有一个 Linux 内核怪癖,这次是在USB HID 设备驱动程序中。
#define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500 0x076c
已应用“ ”这个怪癖MS_DUPLICATE_USAGES,并且该怪癖仅适用于此特定产品和设备ID。该设备的相关怪癖代码已于近14年前引入Linux内核。
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500), .driver_data = MS_DUPLICATE_USAGES },
if (quirks & MS_DUPLICATE_USAGES) clear_bit(usage->code, *bit);
该模拟 HID 设备至少连接了 42 次,并且是该设备在出现以 root 身份成功执行任意代码的迹象之前连接的最后一个设备。重复连接可能是试图修饰内核内存或触发代码执行。
非内存安全设备驱动程序带来的长期安全风险
此 USB 漏洞链显示了非内存安全 Linux 内核代码的长尾风险,尤其是为处理一系列非标准 USB 设备而引入的大量设备驱动程序代码。近期在 Linux 内核中引入 Rust等内存安全语言的努力,为减少新编写的设备驱动程序中的此类安全问题提供了一种颇具前景的选择。其他安全缓解措施,例如在锁定的设备上阻止新的或不受信任的 USB 硬件连接,或许能够更直接地防御现有非内存安全内核驱动程序中的漏洞。
4. 结论:迫切需要调查塞尔维亚数字取证工具的滥用情况
国际特赦组织于2025年1月31日告知Cellebrite,塞尔维亚当局持续滥用其法医产品。本文所述的另一起案件发生在2024年12月25日,即我们报告发布九天后,也即国际特赦组织首次向Cellebrite提供其产品被滥用的详细证据后近一个月。Cellebrite于2月25日声明:
在审查了国际特赦组织2024年12月报告中提出的指控后,Cellebrite根据其道德与诚信政策,采取了精准的措施,对每一项指控进行了调查。我们认为,目前停止相关客户使用我们的产品是恰当的。
在审查了国际特赦组织2024年12月报告中提出的指控后,Cellebrite根据其道德与诚信政策,采取了精准的措施,对每一项指控进行了调查。我们认为,目前停止相关客户使用我们的产品是恰当的。
Cellebrite 声明
虽然Cellebrite声明并决定停止“相关客户”使用其产品,表明其已采取措施进行调查并采取行动,但目前尚不清楚这起最新案件是否在其调查范围内。此外,Cellebrite未能向国际特赦组织提供更多信息,说明这些客户被暂停使用产品的期限,以及在允许他们再次使用Cellebrite产品之前需要满足哪些条件或人权保护措施。此案再次凸显了Cellebrite亟需引入切实有效的保障措施,以降低其产品可能造成侵犯人权的风险,包括彻底审查其尽职调查程序;实施技术机制以限制Cellebrite取证工具的侵入性;并为因非法使用其产品而权利受到侵犯的受害者提供赔偿和补救。
鉴于塞尔维亚当局滥用先进数字技术的最新案例,所有取证和监控技术供应商应暂停向塞尔维亚当局出售监控技术,因为此类工具极有可能被用于持续镇压抗议运动。IMSI 捕获器、间谍软件和移动取证技术的供应商应暂停向塞尔维亚情报局 (BIA) 和其他当局出售此类技术,直至建立符合人权标准的框架,以防止进一步的滥用。
鉴于塞尔维亚持续存在将数字取证工具滥用于政治目的的情况,以及Cellebrite公司决定暂停部分塞尔维亚客户使用其产品,塞尔维亚当局必须立即调查所有已报告的针对塞尔维亚民间社会成员和记者滥用数字取证工具的案件,并建立有效且健全的法律框架,以防止此类滥用,并对监控行为进行独立的管控和监督。最后,当局必须为非法定向监控的受害者提供有效的救济,并追究违法者的责任。
附录:USB 漏洞利用的完整痕迹
下表显示了在使用 Cellebrite UFED 漏洞利用青年活动家手机时观察到的每个 USB 连接和断开事件的轨迹。可以看到单独的利用流程,每个流程都以 USB 集线器设备的连接开始,以设备的断开结束。虽然在每个流程中都看到了一些设备,例如 HID 鼠标 (0x076c),但 UVC 网络摄像头 (0xb071) 和 Extigy 声卡 (0x3000) 分别只在第二和第三个流程中出现。
观察到的痕迹表明,Cellebrite UFED 系统试图触发多个相关但不同的漏洞利用链以解锁设备。上述漏洞分析展示了 UVC 网络摄像头流和 Extigy 声卡流如何被用来破坏内核内存并实现任意代码执行。
在最后一个 HID 设备连接后约 30 秒内观察到成功的内核代码执行工件。
全部文章均带有阅读原文链接
原文始发于微信公众号(Ots安全):Cellebrite 零日漏洞攻击塞尔维亚学生活动人士的手机
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论