「每秒十二比特」:Cloudflare 在生产环境复现远程 Spectre 攻击

| | 1 次浏览

引言

2018 年 1 月,Spectre(幽灵)与 Meltdown(熔断)的公开让整个芯片和操作系统行业连夜打补丁。七年过去,“幽灵”逐渐淡出头条,不少人把它当作已经翻篇的旧闻。但 Cloudflare 近日发布的一篇论文提醒所有人:它不仅活着,还学会了在生产环境里干活,研究团队在真实运行中的 Workers 服务器上复现了一次远程 Spectre 攻击,以每秒 12 比特的速度、99% 的准确率,从另一台 Worker 服务器上读出了一个 JWT Token。(来源:IT之家

事件要点

  • Cloudflare 于 8 月 17 日发布论文,攻击对象不是实验室里的模拟环境,而是承载真实业务流量的生产 Workers 服务器。
  • 攻击以每秒 12 比特的速率提取数据,准确率达 99%,成功读取了另一台 Worker 上的 JWT Token。
  • 这是 Spectre 的“远程”形态:攻击者无需在目标机器上拥有本地账户,也不需要物理接触,只要能让自己的代码与受害者共享同一台物理机。
  • Cloudflare 早在 2021 年就部署了 Dynamic Process Isolation(DyPrIs)机制,识别疑似恶意脚本并将其隔离到独立进程。但论文指出 Spectre 攻击手法仍在持续迭代,研究团队基于生产环境与真实工作负载构建了更新版概念验证程序。

背景:为什么“远程”两个字分量很重

先补一句原理。现代 CPU 为了性能会“抢跑”:在分支条件确定之前,就按预测路径先执行,猜错了再回滚。架构层面的回滚看似天衣无缝,但缓存等微架构状态并不会完全复原。攻击者通过测量内存访问的时序差异,可以推断出这些“幽灵执行”触碰过的数据,从而越界读到本不该看到的信息。

Spectre 诞生之初,绝大多数演示都在本地进行:攻击代码与受害者同处一个进程,计时精度和噪声控制都不是问题。真正的难点在于把攻击搬到远程,让一段外部代码隔着进程边界读取另一段代码的内存。这要求对计时有极高的掌控力,还要在真实业务的干扰中把微弱信号从噪声里捞出来。

而这恰恰是 Workers 这类平台最敏感的场景。边缘计算和 Serverless 普遍采用多租户架构,成千上万客户的代码共享同一批物理服务器,平台用 V8 isolate 做逻辑隔离。但 isolate 之间在硬件层面依然是“同床异梦”:只要预测执行的侧信道存在,逻辑隔离就可能出现裂缝。

算一笔账:12 比特/秒够干什么

单看“每秒 12 比特”似乎微不足道,但这正是侧信道攻击的典型形态——细水长流。换算一下,12 比特约合 1.5 字节,一个几百字节的 JWT Token,几分钟到十几分钟就能搬空。而 JWT 往往就是会话凭证,攻击者拿到它便可能冒充用户身份。99% 的准确率还意味着事后纠错成本极低,攻击者几乎不需要重试。

防御的困境

DyPrIs 代表了行业的主流思路:默认不开进程级隔离(开销太重),而是在检测到疑似攻击特征时,把可疑脚本动态“升舱”到独立进程。这是性能与安全之间的折中——Workers 的商业模式建立在毫秒级冷启动和极高的部署密度之上,若每段用户代码都跑在独立进程里,成本结构就撑不住了。

但这次论文等于坦承:折中方案会持续被攻击者试探。七年里 Spectre 变种不断翻新,硬件厂商的微码补丁与软件缓解各有性能代价,而预测执行本身是现代 CPU 性能的根基,不可能彻底放弃。这注定是一场没有终点的军备竞赛。

简短点评

Cloudflare 把自己平台上的可攻击性写成论文公开发布,这种坦率值得肯定,公开细节远比捂盖子对行业更有价值。对开发者的启示也很直接:不要把“跨进程”“跨 isolate”当作绝对安全边界,处理密钥、令牌这类敏感数据时,不妨多问一句“我和谁在共享硬件”。在 AI 推理、Serverless、WASM 等共享算力形态日益普及的今天,“幽灵”的威胁模型只会越来越相关。它从未离开,只是换了个地方蹲守。

评论(0)

暂无评论,来写第一条吧。