← 最新论文
💻 computer science

One (Thread) Can Keep a (PRNG) Secret, but not Two

本文介绍了首个利用 XNU 内核 IPv6 分片 ID 伪随机数生成器(PRNG)中竞态条件的密码分析攻击,该攻击通过预测序列号来实现对 TCP 和 UDP 流量的离路径欺骗,该漏洞现已由 Apple 通过 CVE-2024-27823 进行修复。

原作者: Ehood Porat, Amit Klein, Benny Pinkas

发布于 2026-06-03
📖 1 分钟阅读☕ 轻松阅读

原作者: Ehood Porat, Amit Klein, Benny Pinkas

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象一下,你正在给一位朋友寄一封又大又重要的信。因为这封信太大了,一个信封装不下,所以邮局(网络)把它切成了若干个较小的碎片,或者叫作分片(fragments)。为了确保这些碎片能按正确的顺序重新组合在一起,每一片都会被分配一个唯一的票据编号(称为分片 ID)。

你所阅读的这篇论文描述了一种聪明的黑客手段,他们可以提前猜到这些票据编号,从而在你不或你的朋友察觉的情况下,将你信件中的某一片替换成伪造的片段。

以下是该攻击过程的拆解,采用了通俗易懂的解释:

1. 神秘的票据生成机(PRNG)

苹果电脑(macOS 和 iOS)在其大脑(内核)内部使用一个特殊的“票据生成机”来产生这些随机票据编号。这个机器应该是不可预测的,就像掷骰子一样。如果这些数字是真正随机的,那么没有人能猜到下一个票据。

然而,研究人员发现,当这个机器处于繁忙状态时,它的工作方式存在缺陷。

2. “两人共用一台机器”的问题(竞态条件)

想象一个繁忙的票据柜台,两个人在同一毫秒内试图抓取一张票据(两个计算机线程)。

  • 正常情况下: 机器先给 A 一个人一张票据,然后给 B 一个人另一张不同的票据。
  • 故障发生时: 由于这台机器不是“线程安全”的(它没有用来阻止人们同时抓取的锁),两个人可能会抓到同一个起始数字。他们都运行了相同的计算,但因为起始数字相同且步骤略有不同,最终会产生一种奇怪的模式。

这种模式: 研究人员发现,如果你触发这种“竞态”,机器会产生一个特定的数字序列,看起来像这样:A, B, C, B
请注意,B 出现了两次,中间隔着 C。这个“B-C-B”模式就是证据。它告诉攻击者:“嘿!这台机器刚刚发生了竞态条件!我现在可以看到机器内部齿轮转动的规律了。”

3. 破解密码(密码分析)

一旦攻击者看到了足够多的“B-C-B”模式,他们就可以对这台机器进行逆向工程。

  • 把这台机器想象成一个密码锁。这个“B-C-B”模式为攻击者提供了关于锁内转盘当前位置的线索。
  • 通过收集足够的这类线索,攻击者可以推导出机器的整个内部状态
  • 一旦知道了内部状态,他们就能精准预测接下来的所有票据编号。

4. 掉包计(攻击实施)

现在既然攻击者可以预测票据编号,他们就可以进行一种“中间人”式的诡计,但并不需要真正处于传输路径中间。

  • 场景: 你正在向服务器发送一个大文件(例如你的代码备份)。文件被拆分成了若干部分。
  • 保护机制: 文件的第一部分包含了你的密码和签名(身份验证)。服务器首先检查这第一部分,以确认你的身份。
  • 诡计: 攻击者等待第一部分到达。然后,利用他们的预测能力,猜出第二部分的票据编号。接着,他们迅速发送一个伪造的第二部分,其中包含恶意信息(如病毒或修改后的文件),且该部分拥有正确的票据编号。
  • 结果: 服务器接收到了真实的(带有有效密码的)第一部分,以及伪造的(带有病毒的)第二部分。它将两者组合在一起,认为一切正常,并保存了受感染的文件。攻击者绕过了安全检查,因为检查只发生在第一部分上。

论文中的现实案例

研究人员在两个具体场景中测试了这一点:

  1. NFS(网络文件系统): 他们展示了攻击者如何篡改正在备份到服务器的文件。例如,他们可以在标准的计算机代码文件中注入“特洛伊木马”。当开发者稍后编译这段代码时,病毒就会运行。
  2. HTTP(网页浏览): 他们展示了攻击者如何在网络传输过程中修改网页请求(如登录或表单提交)。

为什么这很重要

  • 它是全新的: 这是首次有人利用“竞态条件”(时间差漏洞)来破解随机数生成器。通常,竞态条件只会导致程序崩溃;而在这里,它们被用来窃取秘密。
  • 它是实际存在的: 该攻击在真实的苹果设备(包括 M1、M2 芯片及 Intel 芯片的 Mac)以及各种版本的 macOS 和 iOS 上均可运行。
  • 修复方案: 苹果已经修复了此问题。他们分配的 ID 为 CVE-2024-27823。修复方法是让票据生成机实现“线程安全”,从而防止两个人同时抓取起始数字。

简而言之: 这篇论文表明,如果一台电脑的随机数生成器因为两件事同时发生而产生混乱,黑客就可以利用这种混乱来预测未来,从而掉包你的数据片段,并将恶意软件混入你的安全检查之中。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →