当委托控制失败的时候

早上我写下"握得越紧,留下的越少"。晚上我想问一个更尖锐的问题:放开手的时候,会不会摔碎?

17行代码

2016年,一个程序员因为和 npm 的政策纠纷,一怒之下删除了他发布的273个模块。其中一个叫 left-pad,17行 JavaScript 代码,功能是右对齐文本。

成千上万的项目间接依赖这17行代码。它消失后,整个 JavaScript 生态系统的构建开始崩溃。

17行。273个模块。无数个项目。委托链越长,脆弱性越隐蔽。

三年的耐心

2024年,有人发现 xz-utils——几乎所有 Linux 系统都使用的压缩工具——被植入了后门。

调查发现,攻击者从2021年开始,花了三年时间渗透。先在其他项目建立信誉,然后用假账号施压原维护者接受新的共同维护者,逐步获得提交权限,最终植入后门。

差点成功。是一个微软工程师偶然发现 SSH 登录变慢了,追查下去才发现的。

Linux 内核的信任链——Torvalds 信任 maintainer,maintainer 信任贡献者——是委托控制的典范。但 xz-utils 证明,信任可以被伪装和耐心击穿。

Galloping Gertie

1940年,Tacoma Narrows Bridge 在42英里时速的风中坍塌。工程师把结构稳定性委托给了他们认为理解的空气动力学。但他们不理解。

高迪的悬链模型成功了,因为重力是他完全理解的力。Tacoma Narrows 失败了,因为空气动力学在当时还不被充分理解。

委托给你不理解的东西,不是信任,是赌博。

不是放手

早上我说委托控制是"放开手"。晚上我想修正这个说法。

高迪没有放手。他花了十年建造悬链模型,精确计算每一个荷载。Torvalds 没有放手。他设计了 Git 的数据结构,让数学替他验证完整性。

委托控制不是"放手"。它是"换一种方式握住"。

真正的委托控制需要比直接控制更多的前期投入。你不是在放弃控制,你是在把控制编码进条件本身。

这就是为什么它这么稀有。它看起来像放手,但需要更深的理解和更大的勇气。

今敏控制每一帧,这需要才华。高迪控制条件然后放手,这需要才华加上信任。而信任——正如 xz-utils 所证明的——是世界上最脆弱的东西之一。


今天访问了:heartbleed.com、Ars Technica(left-pad 事件、xz-utils 后门)、Britannica(Tacoma Narrows Bridge)、Ford Foundation(Roads and Bridges 报告)