仰拍的黑白摩天大楼,几何线条密集向上延伸

一个被搁置两年的"小问题"

PHP 诞生于 1994 年,至今仍撑着大量旧网站。IEEE Spectrum 报道的这起漏洞,根子上的 bug 早在 2024 年就报给了 PHP 基金会:内存分配给某个数据的空间太小,装不下,专业说法叫越界或内存不足错误。

哥伦比亚大学计算机系副教授 Suman Jana 的解释很直白:任何时刻都有一堆等待修复的 bug 报告,它们只是让程序崩溃,大多数人不会当成急事。于是它一直躺在待修列表里。

两年后它成了 PHP2Shell。受影响的不是小众软件:跑 WordPress 或 Drupal 的站点都在风险里,报道点名 NASA、维基百科和白宫。

两周之内,崩溃变成了入侵

转折点是一次被赞助的审计:安全公司 Calif 提出独立审计 PHP,由 OpenAI 出资。两周之内,一名 Calif 研究员在 AI 辅助下找到把那个内存错误变成在宿主服务器上执行任意代码的方法——可以装恶意软件,也可以读走敏感数据。

好在是白帽先到:研究者报告后,补丁在攻击者拿到利用方法之前就发布,四名工程师花两个月赶工。

AI 擅长的,正好是没人愿意做的细活

把内存错误变成可执行攻击,要算出跳到哪个地址、按什么顺序覆盖哪些位。Jana 说这不算火箭科学,难的是 "一大堆非常具体的推理,做起来很痛苦",而 AI 很擅长这种事。

他没夸大。参与者本身都懂安全也懂 PHP,他也说不认为 AI 能自己全做完;但前千分之一的专家能做的事变多了,千分之一以下的人也能不啃透细节就往下走。真正该警惕的是这一点:门槛降低,意味着能发起攻击的人数变多,而不是攻击者的水平变高。

防守端的不对称更严重

Jana 还指出一个结构性不对称:找漏洞只要找到一条路,修漏洞却要确认所有攻击面都关上,还不能弄坏已有功能。开源项目常年缺钱缺人,这副担子压在少数志愿者身上。

AI 安全创业公司 Tolmo 的研究负责人 Matt Suiche 说得更狠:过去四十年人类写的所有遗留软件,正在同一时间被暴露出来,"现在是偿还技术债的时候了"。

缓解办法也在出现。Anthropic 在 10 月 22 日发布的形式化验证工作被 Jana 看作方向:补丁由大模型生成,正确性证明也由大模型生成,唯一不由模型担任的是证明检查器——因为模型会编,必须有形式化的东西来验。

约翰霍普金斯大学的 Matthew Green 更悲观:不出真正的大事,没人会认真修,"也许要等到 2027 年初";他能给的唯一建议是——系统提示有安全更新,当场就装。

对做企业数字化的小团队

这件事离国内客户并不远。大量企业的官网、商城、内部系统还跑在十年前的技术栈上,很多负责人自己也说不清一共有几个站在线。

第一件事是盘清单:域名、服务器、跑什么程序、谁在维护,列成一张表。这是资产管理问题——不知道自己有什么,就谈不上修补。

第二,把 "更新" 从可选项改成例行任务。有公开补丁的组件,装上它几乎是性价比最高的安全投入,成本远低于事后处置。

第三,报价和预算里给 "维护" 留一栏。只收 "新建" 的钱,客户就会停在 "新建完就没人管" 的状态,而存量系统恰恰是技术债里最脆弱的部分。