← 最新论文
💻 computer science

Remote-Timer-as-a-Service: Efficient Microarchitectural Leakage in the Cloud with Remote Timers

本文论证了 Cloudflare Workers 现有的针对 Spectre 攻击的防御措施(包括动态进程隔离,即 DyPrIs)在应对远程微架构泄漏方面是不充分的,因为作者成功利用远程计时器和放大技术,以显著更高的速度窃取了 JWT 令牌,这促使 Cloudflare 实施了硬件辅助内存隔离和 V8 沙箱机制来缓解该漏洞。

原作者: Martin Schwarzl, Haocheng Xiao, Albert Pedersen, Sam Ainsworth, Nigel Topham

发布于 2026-08-19
📖 1 分钟阅读☕ 轻松阅读

原作者: Martin Schwarzl, Haocheng Xiao, Albert Pedersen, Sam Ainsworth, Nigel Topham

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

在现代数字领域,我们大量的在线活动并非发生在遥远的、中心化的数据中心,而是发生在距离我们更近的服务器上。这种被称为“边缘计算”的方法,通过在附近处理数据,使网站和应用程序能够几乎即时响应。为了实现这种速度,像 Cloudflare 这样的公司在同一台物理计算机上同时运行着成千上万个不同的客户程序。他们通过共享一个大型软件环境来实现这一点,而不是为每个客户提供独立的隔离计算机。这种设计极其高效,但也创造了一个独特的漏洞。如果一个程序可以窥视另一个程序的内存,它就可能窃取敏感信息,如密码或密钥。多年来,安全专家一直担心一种被称为 Spectre(幽灵)攻击的特定技巧,在这种攻击中,程序利用计算机处理信息时产生的微小、不可见的延迟,来猜测另一个程序所持有的数据。

来自 Cloudflare 和爱丁堡大学的研究人员最近证明,这种理论上的风险是一个非常现实且具有实际危险性的威胁。他们展示了即使在 Cloudflare 为了阻止此类技巧而实施了严格的安全规则的情况下,恶意程序仍然可以通过监听互联网上的事件时序来窃取秘密。该团队证明,通过使用一种巧妙的技巧组合,攻击者可以测量出足够精确的时间,从而绕过系统的防御措施。他们成功地从运行在同一台机器上的受害者程序中提取了一个数字令牌,其速度比以往任何尝试都要快数百倍。这一发现迫使该公司彻底改革其安全架构,从基于软件的警告转向硬件强化的屏障,以保护其用户。

故事始于这些边缘计算机是如何构建的。为了处理每秒数百万次的请求,Cloudflare 在单个进程(一个包含所有活跃程序的巨大容器)内运行许多不同的客户脚本。这与旧系统不同,在旧系统中,每个程序都在自己的独立盒子中运行。虽然这种共享方法让一切运行得更快,但也意味着如果一个脚本找到了读取其邻居内存的方法,它就能看到邻居正在进行的一切。为了防止这种情况,Cloudflare 引入了几项安全措施。他们冻结了程序可以读取的时钟,从而阻止它们精确测量时间。他们还取消了程序共享内存或同时运行多个线程的能力。此外,他们安装了一个名为“动态进程隔离”的监视系统,用于监控脚本的行为。如果一个脚本表现得异常,例如试图过于频繁地测量时间,系统就会将其从共享进程中踢出,并放入一个独立的盒子中。

研究人员着手测试这些防御措施是否真的足够。他们首先解决了时间问题。由于系统在正常工作期间冻结了时钟,攻击者需要一种从外部测量时间的方法。他们发现可以使用一种称为 WebSockets 的功能,它允许程序与服务器保持长期的连接。通过在这个连接上发送往返消息,他们可以创建一个即使在主程序忙碌时也能工作的远程计时器。他们在真实的生产环境中进行了测试,而不仅仅是在实验室里,发现他们可以测量出大约一毫秒的时间分辨率。虽然这听起来可能很慢,但对于启动攻击已经足够了。

下一个挑战是让信号在繁忙的互联网噪声中变得足够响亮。一个单一的秘密比特信息可能只会导致几纳秒的延迟,这对于他们的远程计时器来说实在太小了。团队使用了一种称为“放大”的技术。想象一下,试图在嘈杂的房间里听清一声低语;你可能会要求那个人反复低语同样的内容,或者使用一个能让声音产生回声的设备。研究人员构建了一个装置,可以将微小的延迟重复数千次,通过叠加效应,直到总延迟增长到几毫秒。这使得“是”与“否”答案之间的差异大到足以被他们的远程计时器检测到,即使在真实的网络抖动和噪声环境下也是如此。

有了可靠的计时器和放大信号的方法,团队转向了实际的数据窃取。他们需要一种方法来欺骗计算机,使其在不察觉的情况下泄露秘密。他们使用了一种称为“推测执行”的方法,在这种方法中,计算机会猜测下一步应该做什么,并在确定操作是否正确之前就开始执行。如果猜测错误,计算机通常会丢弃这项工作。然而,研究人员发现了一种方法,可以让计算机在缓存(一个小型、快速的内存区域)中留下这项工作的痕迹。通过精心安排代码,他们可以强迫计算机猜测它应该读取特定的秘密数据。尽管计算机随后意识到错误并停止了操作,但读取数据的行为在缓存中留下了痕迹,导致后续访问该位置的时间变长。通过测量访问该位置所需的时间,他们就可以判断该秘密数据是否已被读取。

研究人员将这些元素组合成了一个完整的攻击链。首先,他们利用 Cloudflare 系统中一个名为“持久对象”(Durable Objects)的特殊功能,使他们的恶意脚本能够持续运行数小时而不被停止,从而绕过了通常的时间限制。这使他们能够与受害者保持在同一个共享进程中。然后,他们使用远程计时器和放大装置来泄露受害者数据的内存地址。一旦知道了数据的位置,他们就使用第二个装置来读取实际的秘密,在他们的测试中,这是一个用于身份验证的数字令牌。他们逐位重复这个过程,重建了整个秘密。

结果令人震惊。在真实的生产环境中,该团队能够以高达每秒 12 比特的速率窃取数据。这是一个巨大的进步,此前的尝试仅能达到每小时约 120 比特。该攻击非常精准,正确识别秘密比特的准确率超过 99%。至关重要的是,该攻击成功规避了监视系统。研究人员发现,他们使用远程计时器和长连接的方式让检测系统产生了困惑。系统通过观察脚本访问某些内部计数器的频率来判断其是否具有恶意,但他们攻击的时序让这些计数器看起来表现正常。因为脚本在运行期间从未完成其任务,所以系统在数据被窃取之前没有机会将其隔离。

这一发现凸显了一个根本性的缺陷:仅仅依靠软件来阻止硬件层面的技巧是不够的。Cloudflare 所采取的安全措施,如冻结时钟和监控行为,不足以阻止拥有正确工具的专业攻击者。针对这一演示,Cloudflare 实施了一系列新的防御措施。他们引入了一个沙箱,限制程序访问内存的方式,实际上是在数据周围筑起了一道篱笆,使得即使程序试图向外窥视,也无法触及邻居的秘密。他们还改进了检测方法,使其能够识别攻击的具体模式,而不仅仅是通用的行为。最后,或许是最重要的一点,他们部署了一个基于硬件的隔离系统。该系统利用计算机自身的物理能力,将每个客户的数据锁定在独立的房间内,确保即使一个程序试图闯入,硬件本身也会阻挡这种尝试。

这项工作有力地提醒了人们,在高速计算的世界中,效率与安全性往往存在冲突。通过推动这些系统速度和灵活性的极限,新的漏洞也随之出现。研究人员不仅发现了一个漏洞,他们还证明了利用软件检查来保护共享系统的整体策略在面对现代复杂攻击时是不足够的。解决方案需要转向硬件强化的边界,这证明了有时保护秘密的唯一方法是建立软件无法攀爬的围墙。这项研究证实,虽然边缘计算提供了惊人的速度和便利性,但它也需要更高水平的物理安全,以保护每秒流经其中的海量敏感数据。

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

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

试用 Digest →