糟糕的控制平面构件、脆弱的数据平面和到处都是5xx错误
这篇文章阐述了我们如何看待本周Cloudflare宕机等事件,为什么带有时间锁的纯智能合约控制平面能改变故障模式,以及零知识证明如何适用于此情境。
在2025年11月18日11:20 UTC,Cloudflare边缘节点开始对大量流量返回5xx错误。根本原因并非攻击者,而是ClickHouse权限变更导致查询返回重复行。该查询生成了每隔几分钟发送到每个边缘节点的机器人管理"特征文件"。
这些重复项使文件大小翻倍并将特征计数推至超过200。机器人模块有硬性上限和在溢出时会崩溃的unwrap()函数。随着节点每五分钟在"旧-好"和"新-坏"输出之间交替,整个集群出现震荡,直到所有分片都更新并保持在坏状态。
Cloudflare在14:24停止了发布器,在14:30发送了最后已知的良好文件,并在17:06报告完全恢复。他们列出的后续措施包括:加强内部配置的摄取,添加全局终止开关,以及审查各模块的故障模式。
查看Cloudflare自己的事后分析以获取完整时间线和代码片段。
这个故事中有两个独立的问题:
你仍然可以在代码审查中修复(2)。但(1)是区块链大放异彩的地方:作为部署前的防篡改、可编程门控。
如果将这个想法压缩为一句话:除非智能合约允许,否则配置不会变为"当前",而合约只有在时间锁和证明构件遵守不变量后才会翻转该标志。这一句话暗示了一个完整的架构。
事实证明,公共区块链,特别是基于以太坊构建的、运行以太坊虚拟机和共识层的EVM链,为该问题提供了良好的解决方案。
延迟适配。以太坊按周期最终确认,但L2在几秒钟内确认(OP Stack目标约2秒;zkSync约1秒;许多系统提供快速认证)。这对于五分钟控制平面节奏已足够好,例如OP区块时间讨论或Circle的认证时间)。
为每个构件附加简洁证明并在链上验证。这正是我们为Chainwall协议所做的,尽管用于不同类型的数据!
核心目标是证明基本属性:行数 <= 200,按键排序+唯一,模式匹配正则表达式和类型规则,文件大小 <= N。你可以将整个逻辑放在链上,或依赖Plonk/Groth电路处理更大的表达式。例如,zk-VM客户可以解析CSV/Parquet/JSON并生成SNARK。你不必揭示内容,只需提交承诺。ZK中的正则表达式已有研究和生产系统(例如Reef和相关zk-regex工作),使模式检查变得现实。
有两条实用路径:
边缘节点轮询注册表,只采用链上获准的构件。为避免信任第三方RPC,在控制平面运行轻客户端(例如Helios)或规划Portal Network。这样,边缘节点在接受任何"新当前"状态前本地验证头部和包含证明。
终止开关和回滚只是合约中的位,由边缘节点遵守。Cloudflare明确指出需要更强大的全局终止开关;将该开关放在小型、经过审计的合约中,可在压力下提供单一真相来源。
CloudFlare事件不是攻击,但他们最初认为是,而且确实很可能!正如我们在加密安全中所见:攻击者不仅追逐密钥;他们还胁迫控制平面。
我们的立场:数字资产的控制必须存在于由时间锁和多重签名保护的智能合约中,而非私人凭证、CI令牌、云ACL或管理仪表板。如果你的部署或"更改所有者"操作必须通过合约的schedule()和execute()路径,即使开发者笔记本上有rootkit也无法插队。时间延迟是可靠的断路器,链上审计跟踪是客观的。这只留下"如果我们推广的东西格式错误怎么办?"的问题,这正是"携带证明的配置"所回答的。
我们也相信最小化信任的应用程序有相当大的市场。我们现在只是在OKcontract Labs为第一个明确定义的用例构建正确的基础。
《当一个特征文件绊倒了互联网》最初发表在Medium的Coinmonks上,人们通过突出显示和回应这个故事继续讨论。


