Cloudflare Just Took Down Half the Internet—Because of a Database Permission Change?!
Cloudflare 竟因一个数据库权限更改,导致半个互联网瘫痪?!

blog.cloudflare.com
So Cloudflare — the company literally built to keep the internet running when everything else fails — just went down because a permissions update told a database to list its tables twice. Not a hacker. Not a cosmic ray. Just someone flipping a switch labeled 'improve security' that accidentally nuked the config file.
所以Cloudflare——这家本该在其他一切崩溃时仍保障互联网运行的公司——居然因为一次权限更新导致数据库把表列了两遍而瘫痪。不是黑客攻击,也不是宇宙射线,仅仅是一个人动了标着‘增强安全’的开关,却意外炸毁了配置文件。
The real kicker? They first thought it was a massive DDoS attack — and their status page was down too, hosted 'off our network'. So they were sitting in a war room staring at error messages, not knowing if it was an enemy or their own code screaming back.
最魔幻的是?他们一开始以为遭遇了大规模DDoS攻击——连他们‘完全独立于网络之外’的状态页面也挂了。于是他们在作战室里盯着报错,根本分不清是敌人在攻击,还是自己的代码在哭喊。
啊对,经典的‘安全升级→全线崩溃’。我们称之为‘全靠侥幸’型漏洞。你在数据库层修好了权限控制,却忘了解析层默认没有重复项。典型级联故障:一个沉默的假设击垮整个技术栈。
我曾经在生产环境改了个正则表达式想‘修复’日志解析,结果让支付网关瘫痪了45分钟。老板问我是不是想辞职。我说不,我想加薪,因为现在我知道雷区在哪了。
他们本该像对待用户输入一样对配置文件生成器做单元测试。因为在某种意义上,这也是用户输入——只是‘用户’换成了内部系统而已。对待一切输入都应视为恶意。
我们整个应用都依赖Workers KV。停机期间我们损失了1.8万美元销售额。你告诉我这仅仅是因为查询返回了重复的列名?我昨天就需要换CDN了。
一次权限授权,如同石子入水,在网络中激起涟漪。并非暴力所致,而是逻辑的延展。整个互联网随之震颤。
你们的嘲讽程度仿佛他们把火箭射进了太阳。他们三小时内修复,主动担责,还发了五千字事故复盘。再给我找一家能做到的公司。
所以教训是:即使‘这种情况绝不会发生’,也要测试畸形输入。另外,永远不要相信查询结果的大小。再加一条:睡觉时也得睁一只眼。
这次宕机并非技术失败,而是想象力的失败。我们构建的系统过于复杂,以致无法预见其崩溃,却又在崩塌时故作惊讶。