有据可查的 AI 新闻、模型与产品English
新闻文章安全

PHP 一个拖了两年的漏洞,AI 帮人证明能远程接管服务器后,十周就修好了

PHP 10 月 21 日修复两个严重漏洞,未更新的服务器可能被人不登录就远程执行代码。PHP 基金会承认问题 2024 年就有苗头,因为没人证明能被利用而一再搁置;8 月起 Calif、Wiz 和 OpenAI 借助 AI 证明了危害。建站者应升级到 8.2.35 及以上,8.1 及更早版本没有官方补丁。

一只蓝色的毛绒大象玩偶,身上绣着 php 字样
PHP 社区的吉祥物「elePHPant」。资料照片。 照片:Atomic Taco / Wikimedia Commons,CC BY-SA 2.0

「我们不打算粉饰:这次拖延是结构性的失败。」PHP 基金会在 10 月 21 日的博客里这样写。那天,PHP 发布 8.5.12、8.4.27、8.3.36 和 8.2.35 四个版本,修掉两个严重漏洞:没打补丁的服务器,可能被人不用登录就远程执行代码。

基金会交代了来龙去脉。2024 年,PHP 做了多年来第一次外部安全审计,一位基金会雇用的核心开发者在修审计发现的问题时,看到了其中一个漏洞的苗头:请求恰好在内存用尽的那一刻出错,PHP 会把没初始化完的内部数据留下来,之后当成有效数据用。当时有人设想过它可能被利用,但谁也没找到具体的攻击路径。修法有好几种,每种都有代价,要么破坏兼容性,要么要求大量第三方扩展跟着改。安全团队按一致同意的规矩决策,懂这部分引擎的人又少,修复就这样「停了又开,开了又停」,拖了好几个月。

转折在今年 8 月。安全公司 Calif 7 月 30 日开始审计 PHP,8 月 11 日报告了一条不需要任何前提的远程执行代码路径,根源正是 2024 年那个问题。云安全公司 Wiz 8 月 19 日发现了相关漏洞,第二天就在 Drupal 上证实可以远程接管;OpenAI 的安全团队也独立报了同一个根源,9 月又补了几条攻击路径。从 8 月 11 日起,修它成了基金会安全工作的头号任务,十周后补丁发布。

几家报告者都用了 AI。Wiz 说它全程用了自家的漏洞研究工具和 Google 的 Gemini 4 Argon、OpenAI 的 GPT-5.6 Sol,Gemini 在发现漏洞、写攻击程序、验证补丁上「贡献了不可替代的作用」。Calif 的研究员在技术文章里写,他第一步就是请「我的大模型伙伴」帮忙找办法让内存超限。Wiz 对 AI 作用的描述很具体:漏洞代码在 PHP 里放了十多年,「AI 改变的是理解这些弱点、把它们变成可用攻击程序的能力」,一名研究员一周做完了以前需要一支顶尖团队花几个月的活。

这和基金会的说法对得上:漏洞早有人看到,缺的是有人证明它真能被打穿,而这一步过去要专家花大量时间,现在 AI 能帮着反复试错、适配不同版本和配置。Wiz 的文章里还有一段 Google DeepMind 的 Gemini 安全负责人的评语,说这次展示了前沿 AI 为什么能改变网络防御。文章没有提到,Wiz 今年 3 月 11 日已经被 Google 以 320 亿美元收购完成,夸 Gemini 的是 Google 自己的子公司。

Wiz 给这次的漏洞起名「PHP2Shell」,标题写的是「影响 70% 的互联网」。这个数来自网站技术统计机构 W3Techs:在能识别出服务端语言的网站里,69.3% 用 PHP。它说的是 PHP 有多普及,不是多少网站能被攻破。PHP 官方的公告把风险排了序:所有处理网页请求的 PHP 安装都受影响,Apache 加 mod_php 的组合风险最高,那里已经演示过在应用代码运行之前就能触发攻击。

能不能被攻破,第二个关键是版本。PHP 8.1 及更早的版本官方早已停止维护,这次也没有正式补丁,只给要自己编译的人留了最简的源码修补。WordPress 官方公布的统计里,34% 的 WordPress 网站还跑在 8.1 或更早的版本上,光 7.4 就占 15%。另一面,修得也快:一家扫描公司 Melurna 在补丁发布 24 小时后复查了公开版本号的 PHP 网站,23% 已经更新,托管商集中更新的,一天内能到九成以上。版本号只是参考,Ubuntu 等发行版会把补丁移植进旧版本而不改号。

至于真实的攻击,眼下比标题温和。SANS 互联网风暴中心的 Bojan Zdrnja 研究了网上流传的几份攻击演示代码,写道其中有「多得难以置信的 AI 生成的……垃圾」,能跑通的那份也有好几个前提条件,「几乎是在作弊」,要做出一键就能用、对各种服务器都可靠的攻击程序「相当难」。原定 10 月 22 日的发布被提前了一天:漏洞编号 20 日在网上泄露,一家容器镜像公司又在协调发布前六个多小时擅自放出了带补丁的镜像。

只是访问网站的读者,什么都不用做。用虚拟主机或托管服务建博客、开网店的人,多半由服务商负责更新,去后台看一眼 PHP 版本是不是已经到了上面四个号之一。自己租服务器、自己装环境的人,要自己升级;还在用 8.1 或更早版本的,要么找发行版或长期支持服务商要移植补丁,要么升级到受支持的版本。暂时没法升级的,php.net 列了几项临时设置,但写明它们只能降低风险,「更新是唯一安全的选择」。

PHP 基金会在文章最后算了笔账:7 月以来,PHP 安全团队发布了 15 个漏洞编号,处理了 100 多份无效、重复或无法复现的报告,很多来自 AI 辅助的研究。它写道:「工具能做的,是比以往更快地找到 bug,对防守方和攻击方都一样。工具做不了的,是为引擎里一个存在已久的设计找到正确的修法、权衡兼容性、审查补丁。」

来源

  1. PHP Foundation · Today's PHP Security Release, and How We're Strengthening PHP Security
  2. php.net · Security advisory: Critical remote code execution vulnerabilities, update now
  3. Wiz Research · PHP2Shell
  4. Calif · PHP2Shell
  5. SANS Internet Storm Center · (Reliable)? php2shell exploitability
  6. W3Techs · Usage statistics of PHP
  7. WordPress.org · PHP version statistics API
  8. Melurna · PHP2Shell patch status
  9. Cleary Gottlieb · Google completes $32 billion acquisition of Wiz