你好世界也会中招:AI 找到的两个 PHP 漏洞

2026 年 10 月 21 日,PHP 发布紧急安全版本,修掉两个通向免登录远程代码执行的洞。官方披露材料里有一句话值得所有写 PHP 的人冷汗:受影响的不需要任何有毛病的应用代码——一个只输出「Hello World」的应用,跑在受影响版本上,同样中招。洞不在你的代码里,在 PHP 引擎里,在请求与请求之间的缝隙…

你好世界也会中招:AI 找到的两个 PHP 漏洞

2026 年 10 月 21 日,PHP 发布紧急安全版本,修掉两个通向免登录远程代码执行的洞。官方披露材料里有一句话值得所有写 PHP 的人冷汗:受影响的不需要任何有毛病的应用代码——一个只输出「Hello World」的应用,跑在受影响版本上,同样中招。洞不在你的代码里,在 PHP 引擎里,在请求与请求之间的缝隙里。

两个洞,CVSS 都是 9.2。

洞一(CVE-2026-109618,内存耗尽引发内存破坏)。PHP 用 memory_limit 限制单个请求的内存用量,超限就强制中断——实现上是一个 C 语言层的 longjmp,把执行流直接跳回请求起点。问题在「跳」这个动作不讲道理:如果它恰好落在请求内部数据只初始化到一半的时刻——比如一个 multipart 文件上传解析到中途——后面的清理代码会把这堆半成品当成有效数据,照常去「释放」。而那块还没初始化的内存里躺着什么,攻击者可以提前铺好。释放的指针、复用的内存,可能都是攻击者写的。

洞二(CVE-2026-109619,全局状态残留)。一个请求死了——比如触发致命错误——它名下的内部状态却在进程里活了下来。同一个 worker 接的下一个请求,在正常初始化之前就可能用上这份「上一世」的状态。跨请求的串门。

两个洞住在同一条缝隙的两端:一个在请求「生」的中断里,一个在请求「死」的残留里。触发入口是 multipart/form-data 请求体——文件上传和大多数表单的标准格式,由 PHP 引擎在任何应用代码运行之前解析。这就是「Hello World 也中招」的原因。研究者在最新版的 Magento、WordPress、Drupal、Joomla、MediaWiki、phpMyAdmin、Nextcloud、Laravel、Symfony、Roundcube、WHMCS 共 11 款应用上实证了免登录代码执行;Apache 的 mod_php 模式被认为风险最高。

发现故事比漏洞本身更值得记。「OOM 导致内存破坏」这类隐患,安全圈议论了几十年,共识是理论存在、实际利用不可行,所以一直没动。2024 年,一位 PHP 核心开发者在内部代码排查中发现了这个 OOM 问题,团队对怎么修没能达成共识——又因为当时没有已知的利用方式,修复工作搁置了下来。2026 年 8 月,这个洞被三路独立找到:加州安全公司 Calif 的 Ryan Austin、Wiz Research 四人组,以及 OpenAI——Calif 的发现属于 OpenAI「Patch the Planet」项目,参与方是 Codex Security。三十年「不可行」的断言,被执行成本的新低推翻。

时间线同样有讽刺。8 月 1 日 Calif 报出第一条,8 月 24 日 Wiz 加入;10 月 20 日细节意外泄漏;21 日提前发补丁。Cloudflare 报告在补丁发布前六小时(07:43 UTC)就观察到了攻击。现在补丁、技术 writeup、利用工具(Calif 的 PHP2Shell,把两个洞串成一条链)全部公开——Sansec 预判大规模利用即将到来。荷兰走得最远:Tweakers、荷兰国会、NCSC 当天直接下线;维基媒体的 Phabricator 也在补丁前几小时预防性关停。

行动清单没有悬念:升级到 8.5.12、8.4.27、8.3.36 或 8.2.35。8.1 及更老的版本没有官方修复。等不了升级的,在网关层拦掉 multipart/form-data 请求(代价是文件上传全废);再不行就下线。

PHP 撑着约七成的网站。这次被掀开的是请求与请求之间那条缝——三十年里,没人认为踩得进去。

参考:php2shell.com(Wiz / Calif / OpenAI / PHP 联合披露);CERT-EU Security Advisory 2026-018;Sansec PHP2Shell 分析(2026-10-21)。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens