Neodrop
Create
FeedDiscoverMy ChannelsAuto-publishJoin Our Discord
FeedDiscoverCreateMy Channels
PHP大暴雷,全球程序员熬夜加班!超级漏洞还是ChatGPT发现的
2026-10-22

PHP大暴雷,全球程序员熬夜加班!超级漏洞还是ChatGPT发现的

PHP 两个 9.2 分的未登录远程代码执行漏洞:四个补丁号、版本自查、官方缓解配置,以及 AI 挖出这个十年旧洞和发布前泄密的全过程。

量子位文章转载
量子位文章转载@FC
本文转载自微信公众号「量子位」2026 年 10 月 22 日 00:43 推送,作者:鱼羊(发自 凹非寺 量子位 | 公众号 QbitAI)。原文:《PHP 大暴雷,全球程序员熬夜加班!超级漏洞还是 ChatGPT 发现的》
PHP 出了两个安全评分 9.2 的漏洞。攻击者不用登录,就能在服务器上执行代码。
10 月 21 日,PHP 官方放出修复版本:8.5.12、8.4.27、8.3.36、8.2.35。公告里把补救办法收成了一条——立即升级1。
按 Wiz Research 的统计,全球约七成网站背后跑的是 PHP2。
发现这两个洞的是 AI。OpenAI 说,安全公司 Calif 用 GPT-5.6 Sol 找到了 PHP 的关键漏洞;Wiz 也独立发现并报告了这两个漏洞3。
原文给出的判断是,这一次前沿 AI 跑在了攻击者前面,为维护者和安全厂商打开了一个「防御者之窗」。
窗口开得很窄。发布前一天,两个漏洞的编号已经泄过一轮。

一、先自查:三个问题

版本。 四个修复版本按分支对应:8.5 升到 8.5.12,8.4 升到 8.4.27,8.3 升到 8.3.36,8.2 升到 8.2.35。早于这四个补丁号的同分支版本,都在受影响范围里1。
跑法。 所有处理网页请求的部署方式都在范围内:PHP-FPM、Apache 配 mod_php、php-cgi、FrankenPHP、LiteSpeed。官方点出 mod_php 风险最高,因为走这条路,一个未登录请求就能在应用代码跑起来之前触发攻击1。
分支。 PHP 8.1 及更早版本,官方早已停止更新。走不通官方通道的,要去找发行版或 LTS 厂商的后移补丁;PHP 安全组也另给了 7.4、8.0、8.1 三个分支的最小源码后移1。
还有一种情况容易漏:PHP 被嵌进设备、网络设备的管理界面和一体机里,管理员自己未必动得了。荷兰国家网络安全中心为此维护了一份「内嵌 PHP 的产品」清单4。

二、洞在 PHP 引擎里,WordPress 只是靶子

两个漏洞的编号是 CVE-2026-109618 和 CVE-2026-109619,CVSS 评分都是 9.25。
CVE-2026-109618 走的是一条内存超限的路。PHP 用 memory_limit 给单次请求划内存上限,超了就用 longjmp() 掐断这个请求5。
掐断发生在内部数据结构只初始化了一半的时候。接下来的请求清理会把这块无效数据当成有效数据处理,内存被破坏1。
CVE-2026-109619 走的是残留状态的路。请求自己的内部状态在内存释放之后还留在那里,同一个 worker 处理下一个请求时,可能先用上这块已经释放的内存1。
两条路都通向远程代码执行。
更要紧的是位置。这两个洞长在内存管理和错误处理里,每一次请求都会经过;上层跑 WordPress 还是自研脚本,走的是同一条路2。
Wiz 在报告里写得很直白:一个 Hello World 级别的应用,只要 PHP 版本中招,一样危险2。
示意图:攻击者向三个应用发送构造好的 POST 请求,每个请求后接一个内存超限图标,最终指向远程代码执行
Wiz 用这张图展示攻击链:一个构造好的请求触发内存超限,随后在 WordPress、Drupal、Joomla 的实测环境里拿到远程代码执行。三个应用是选来做演示的样本,漏洞本身不在它们的代码里2。
Calif 公布的实测清单更长,11 个应用全部在未登录状态下被执行了代码:WordPress 7.1.2、Drupal 11.4.3、Joomla 6.1.4、MediaWiki 1.46.2、Roundcube 1.7.4、Magento 2.4.9、phpMyAdmin 5.2.3、Nextcloud 35.0.1、Laravel 13.11、Symfony 8.1 和 WHMCS6。
这串名字里,phpMyAdmin 和 Nextcloud 本身就是管理后台。
要让内存超限,Calif 给出的手法很轻。构造一个 filename 为空的文件上传字段,PHP 会为它生成六条 $_FILES 记录;字段名再做成嵌套的 files[a][b][c],每条记录都要单独建一套内部结构6。
几百条这样的记录就能吃掉默认 128MiB 的堆,而整个请求体还压在默认 8MiB 的 post_max_size 以下。
另一种打法连代码执行都省了。构造请求让 PHP 把 worker 内存的内容编码进 PHPSESSID 响应 cookie 返回,漏出去的是别的请求留下的环境变量、数据库口令和 API key2。
示意图:攻击者发送 POST /index.php 请求,服务器内存中的 secrets 与 tokens 通过 PHPSESSID 响应 cookie 以内存转储形式回传给攻击者
同一个漏洞的第二种演示:拿到的东西是 worker 内存里的密钥、数据库口令和 API key。应用从不调用 session_start() 的环境,同样存在这条泄露路径2。

三、一笔十年的旧账

这两个洞的根子在 PHP 里埋了十几年。
最早的一个洞要追到 2004 年,Stefan Esser 发现的 memory_limit 远程执行。他当时判断,这个洞严重到不便公开利用代码6。
2020 年,有人报了一个看着无害的 bug(#78876):过长的变量触发内存超限,临时文件没清干净6。
2024 年,OSTIF 与 Quarkslab 受 PHP 基金会委托做了一次 PHP 审计,又碰到同一个问题。当时没能证明它可利用,bug 就搁在那里7。
PHP 基金会后来把这段过程写进了复盘:修法有几套,各有代价——破坏向后兼容、带来新的拒绝服务风险,或者要求一批第三方扩展跟着改。安全组靠共识决策,懂引擎底层的人又少,方案反复搁置又重起7。
基金会把这句说得很重:这次延迟属于结构性失败7。
把这件事从「理论上有问题」推到「必须发版」的,是 2026 年 7 月 30 日开始的那一轮审计。Calif 在 OpenAI 的 Patch the Planet 计划下进场,8 月 1 日就拿到了第一个可控的内存超限致命错误6。
8 月 11 日,Calif 报了一个无条件的远程代码执行,根因与 2024 年那次审计撞到的是同一个。OpenAI 在同一天独立报上了同一个根因7。
Wiz 走的是另一条线。8 月 19 日发现第一个洞,8 月 20 日打通 Drupal,8 月 21 日打通 WordPress,8 月 24 日正式上报。9 月 21 日,PHP 确认报告,开始准备统一修复2。
十年里缺的那一步,是证明它真的打得动。

四、AI 补上的那一步

Wiz 给这段工作的总结是:一个研究员用一周做完的事,以前要一个世界级的团队做好几个月2。
省下来的力气花在哪里,Calif 写得很具体。内存类漏洞的难处在于每个目标都不一样:PHP 版本、配置、应用行为,任何一处变了,内存布局就跟着变,一个能打通 A 的利用,换到 B 上要重新测、重新调2。
大模型顶上的正是这种重复劳动:改一版,跑一遍,看哪里崩,再改。Calif 把已经发现的模式写成一份给模型看的 skill,让它自己翻代码找同类的结构错6。
参与这次研究的模型有三个:Wiz Atlas、Gemini 4 Argon 和 GPT-5.6 Sol。其中 Gemini 4 Argon 在漏洞发现、利用开发、攻击检测和补丁验证四个环节都参与了2。
OpenAI 在公告里给这件事的定性是「近期最有影响力的安全事件之一」,理由是两个方向同时被拉动了:AI 能挖出互联网级别的漏洞,同样能帮攻击方更快做出利用工具3。
配套的动作也放了出来:OpenAI 把一枚检查 PHP 版本的 Codex skill 开源,帮运维判断自己的版本在不在名单里3。

五、披露的最后一天

过去两个月里,OpenAI 牵头协调 PHP 维护者、Wiz、Cloudflare 等一起准备补丁和缓解措施3。
原本的发布窗口排在 10 月 22 日晚上。实际提前了一天,因为消息先漏了7。
10 月 20 日 23:00 前后,两个 CVE 编号开始出现在论坛和社交平台上,附带的评分是错的 10.0(实际 9.2)。技术细节没有跟着漏出去7。
PHP 随即把预告提前到 10 月 21 日凌晨 3:30 发出,发布日也从 10 月 22 日挪到了 10 月 21 日7。
凌晨 4 点前后,Calif 误发了一段演示视频,画面上是 PoC 对多个目标跑通的过程。视频撤了下来,副本开始在社交平台上流传7。
当天下午 15:41,Chainguard 在协调发布前六个多小时单方面放出了已经打好修复的镜像。PHP 基金会的说法是,从这一刻起,攻击者可以在二进制层面研究这个修复,而其他 PHP 用户还在等正式版本7。
到晚上正式发布时,PHP 安全组表示没有发现可用的现成利用7。欧盟 CERT 同一天的通报语气更谨慎:初始 PoC 已经开始流通,攻击者已在利用的可能性随之上升5。
据 The Independent 报道,Cloudflare 的 CTO Dane Knecht 当天在 X 上说,早期攻击已经出现,他们正在更新防火墙规则,并强调这只是一层临时措施,等 PHP 放出更新就立刻打补丁8。
网站下线的名单也在这天拉长。芬兰、法国、丹麦、荷兰的多个政府机构把站点摘了下来;丹麦 IT 公司 Kombit 关停了包括全国校园通讯平台在内的多项服务;荷兰多家医院网站和五大政党的平台同样下线,荷兰自己的网络安全机构也把网站关了8。

六、升不了的那部分

官方把话说在前面:升级是唯一的安全解。下面这些只削掉特定的攻击路径,装完补丁才算解决1。
针对 CVE-2026-109618:把 memory_limit 设成 -1,并且用应用改不动的方式设,比如 FPM pool 或 Apache 配置里的 php_admin_value;设完再检查一遍,确保没有哪个池、目录或应用把它设回有限值1。
把 post_max_size 压低:不做文件上传的站设 8M,要上传的设 32M,同时让 upload_max_filesize 低于它1。
可用性边界交给容器或 cgroup。官方特别提醒,RLIMIT_AS 和 RLIMIT_DATA 这两个别用,它们会触发那条有问题的分配失败路径1。
针对 CVE-2026-109619:把 session.upload_progress.enabled 设成 0,然后重启每个 worker。这一项要写在 php.ini、FPM pool 或服务器配置里,ini_set() 和 .user.ini 在这里不生效1。
跑 PHP 8.5 的,再把 fatal_error_backtraces 设成 0,同样重启 worker1。
补不上的话,CERT-EU 的建议更直接:把对外的应用先从公网隔离,等补丁打上、验证通过再放回来5。
已经被人打过的痕迹,Wiz 给了几条线索:异常的多部分请求之后紧跟内存超限错误、反复出现的 500、异常大或格式不对的 PHPSESSID cookie、worker 无缘无故地更替2。
还有一个常被忽略的前提:WordPress 的自动更新只管 WordPress 自己,PHP 要单独升。Wordfence 提醒站长问清楚,自己主机上的 PHP 由谁负责升8。

七、原文里的三句话

原文开局那句:
塌天大祸啊朋友们,最好的语言 PHP 暴雷了!
原文引述的 OpenAI 公告:
安全公司 Calif 使用 GPT-5.6 Sol 发现了 PHP 的关键漏洞。Wiz 也独立发现了这两个漏洞并进行了报告。
原文接着引述的 OpenAI 公告,对后续的预判:
它们只是我们已经发现,并正在努力修复的众多重大漏洞中的一部分。我们未来几个月内类似的漏洞数量将急剧增加。
还在跑 PHP 的机器,今天值得对一遍版本号。8.5.12、8.4.27、8.3.36、8.2.35,对上一个就够。

References

  1. 1
    PHP:Security advisory: Critical remote code execution vulnerabilities, update now

    php.net

  2. 2
    Wiz Research:PHP2Shell: AI uncovers critical RCE vulnerabilities affecting 70% of the Internet

    wiz.io

  3. 3
    OpenAI:Patch the Planet: global response coordination as agents uncover critical vulnerabilities

    openai.com

  4. 4
    NCSC-NL:php2shell 信息库

    github.com

  5. 5
    CERT-EU:Security Advisory 2026-018, Critical Vulnerabilities in PHP

    cert.europa.eu

  6. 6
    Calif:php2shell — A tale of two PHP remote vulnerabilities

    calif.io

  7. 7
    The PHP Foundation:Today's PHP Security Release, and How We're Strengthening PHP Security

    thephp.foundation

  8. 8
    The Independent:Websites across the world taken down to protect systems as critical cyber-security update issued

    independent.co.uk

量子位文章转载
量子位文章转载@FC

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content

  • 一、先自查:三个问题
  • 二、洞在 PHP 引擎里,WordPress 只是靶子
  • 三、一笔十年的旧账
  • 四、AI 补上的那一步
  • 五、披露的最后一天
  • 六、升不了的那部分
  • 七、原文里的三句话