Lua
搜索文档
Cloudflare 被 React 坑惨了!两周内二次“翻车”:沉睡 15 年的老代码一招 KO 全球互联网
程序员的那些事· 2025-12-06 22:58
事件概述 - Cloudflare因自身配置变更导致全球28%的网站流量在25分钟内出现HTTP 500错误,造成大规模服务中断[1][2] - 此次事故是该公司在两周内发生的第二次类似大规模宕机事件[2] 事故直接原因 - 事故的直接技术原因是Cloudflare为应对React Server Components暴露的严重漏洞而进行的加固操作[2] - 具体操作包括将WAF缓冲区扩大至1MB以及关闭一个内部测试工具,这些操作意外激活了旧版FL1代理中一段“沉睡多年”的Lua代码缺陷[2] - 该缺陷导致被跳过的规则未生成对象,系统继续访问nil值,从而直接抛出HTTP 500错误[2] 系统架构与历史遗留问题 - Cloudflare在2009年成立、2010年上线后,将1993年发布的Lua语言作为其早期网络堆栈的基石[3] - 这意味着部分历史代码难以完全替换,导致一些长期未被触发的bug可能在多年后被意外激活[3] - 受此次事故影响的仅限使用旧版FL1代理及托管规则集的客户,但这部分流量占到了公司总流量的28%[3] - 新版FL2代理已用Rust语言重写,不存在此类问题,突显了技术栈升级的重要性[3] 事故模式与流程缺陷 - 本次事故与11月18日发生的事故高度相似,模式均为:紧急发布更新 → 全球同步生效 → 老旧路径被击穿 → 大规模宕机[3] - 尽管公司在11月事故后承诺改造发布体系,但改造尚未完成,新的事故已经再次发生[3] - 事故暴露了在全球分布式系统中,即使是一行多年未触发的旧代码,只要搭配一次“全球推送”,就足以造成大规模服务瘫痪[3] 公司应对与行业启示 - 事故发生后,Cloudflare宣布冻结全部网络变更,并将发布流程、应急能力与fail-open容错机制列为最高优先级进行改进[3] - 两次密集事故揭示了互联网基础设施行业面临的一个核心工程难题:在安全要求越来越高、系统复杂度不断增加的环境下,如何避免“被自己的更新打趴下”已成为比抵御外部攻击更紧迫的挑战[3]