一组网络安全研究人员近日披露了一项针对Cloudflare Workers的远程Spectre攻击细节。在真实生产环境中,攻击者成功从同一进程内另一个Worker中窃取了JSON Web Token(JWT),泄露速率最高达到每秒12比特——这是2021年同类攻击演示速率的360倍。
这项端到端实验由研究人员控制的攻击者Worker和受害者Worker完成,JWT被有意放置在受害者内存中。研究论文明确表示,实验中未访问任何客户数据。Cloudflare方面回应称,该攻击已在生产环境中得到缓解,且过去三年内未发现任何主动利用的迹象。
![]()
攻击原理:共享进程内的隔离缺口
Cloudflare Workers的架构设计有其特殊性:它将多个租户的代码运行在同一个操作系统进程内的不同V8隔离实例中,依靠语言级隔离而非严格的进程隔离来降低启动延迟。这种设计在性能上有优势,但也带来了风险——Cloudflare承认,共享Worker进程内的内存读取可能导致跨租户数据泄露。
攻击的前提条件并不复杂:攻击者Worker和受害者Worker需要被共同放置在同一个Worker进程内的不同V8隔离实例中。攻击者在其自身的隔离实例中运行合法代码,整个过程不依赖V8软件漏洞或沙箱逃逸,原生代码执行也不在威胁模型之内。
两个关键弱点:远程计时源与长期存活
Cloudflare Workers对本地计时源做了限制——在CPU执行期间冻结或粗化定时器,同时不向Worker脚本暴露共享内存或多线程能力。但研究人员发现,WebSocket通信可以提供远程计时源,而Durable Objects则能让单个Worker隔离实例存活5到20小时以上。
论文指出,DyPrIs(动态进程隔离)会在调用结束后将可疑脚本隔离到独立进程中。但一个长期存活的Durable Object调用,可能在隔离生效之前就持续运行。更关键的是,WebSocket密集型输入/输出活动会增加指令转换后备缓冲区(iTLB)的活动量,从而将DyPrIs用于检测的分支误预测归一化信号压低到检测阈值以下。
检测方法的根本局限
Cloudflare将问题描述为其DyPrIs实现的一个局限,但研究论文认为,这两个弱点反映的是检测方法本身的根本性局限,而非实现上的疏忽。研究人员强调,稳健的检测应当在执行过程中进行,并且需要使用不会被I/O活动压制的信号。
生产环境测试在搭载AMD EPYC Zen 2和Zen 3处理器的Linux服务器上进行。研究人员特意选择在夜间运行测量——此时CPU利用率在10%到25%之间——以观察最佳可能的结果。
Cloudflare表示,在改进DyPrIs、集成V8沙箱并部署基于内存保护密钥(MPK)的进程内隔离后,该攻击已在生产环境中得到缓解。研究人员的核心结论则更为直接:“我们证明,DyPrIs的生产实现是不够充分的。”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.