「你在意信息安全用什么 PHP」:PHP2Shell 之后,知乎上的半个夜晚

"你在意信息安全用什么 PHP":PHP2Shell 之后,知乎上的半个夜晚

2026 年 10 月 21 日北京时间晚上 10 点,PHP 官方一口气发了四个版本:8.5.12、8.4.27、8.3.36、8.2.35。修的是两个未认证远程代码执行漏洞,CVE-2026-109618 和 CVE-2026-109619,CVSS v4.0 都是 9.2,安全圈管它叫 PHP2Shell。

第二天我翻了一圈知乎。没有人真的惊讶 PHP 会暴雷,大家惊讶的是另外两件事:一国首相跑来催打补丁,以及 AI 用两周时间拆掉了一堵二十年没人拆的墙。

一、主战场:一个问题和它的高赞

知乎上这件事有一个主问题:《PHP 曝两个 Critical RCE 漏洞,影响有多大?》。抓取时最高赞的回答(作者 Kitt在进化,约 146 赞)是标准的救火文案:

连高市早苗都转发了,你就说影响大不大吧?……我估计不少研发同学今晚要加班,所以我先用最简单最直白最不绕弯子的方式给出官方建议的修复方案。

最根本的修复是把 PHP 升级到 8.5.12、8.4.27、8.3.36 或 8.2.35,不过大晚上的,升级 PHP 不是一个好主意。

深夜十点发补丁这个时间点,本身就构成了半个舆论场。升级怕出事,不升怕被打穿,于是这道题被拆成了"今晚先挡一下,明天再升"。

同一条问题下另一条 47 赞的回答,则贡献了这次最出圈的梗:

两个 critical 的远程执行漏洞,加无人在意的回答,有种"你在意信息安全用什么 PHP"的既视感

它是拿 Python 圈的"你在意性能用什么 Python"改的。技术圈的老梗一嫁接,评论区的气氛就定了调:严肃但不沉重。

二、五类反应

1. 自嘲派:地基塌了,不是房子塌了

配套的老梗是"全世界最好的语言又双叒大暴雷"。专栏作者们的说法更准一点:

PHP 撑着全球一大半的网站,WordPress、Drupal、Joomla、Magento 全在它上面跑,这次挨打的是地基,不是房子。

出处:《PHP 爆发近几年最严重的安全漏洞「php2shell」》

这句话不只是在玩梗。它其实是对这次事件性质的判断:锅在引擎,不在框架、不在插件、不在业务代码。

2. 认命派:二十年攒下的运气,一天用完

《PHP2Shell:七成的网站要连夜补洞,这回真不是吓唬人》是我读到的知乎专栏里写得最狠的一篇。它的开头没有缓冲:

分数是虚的。洞是真的。
我先把话说明白:这不是又一次"建议升级"。这次要么升,要么把机器从网上摘下来。
难听点讲,这是二十年攒下的运气,一天用完。

结尾那段,做运维的看了大概率会沉默:

我摸过的老机器里,跑着 PHP 5.6 的一只手数不完。它们的共同点是:没人记得密码,也没人敢重启。
这类机器,今晚最好有人去看一眼。

3. 荒诞派:一国首相催你打补丁

《高市早苗发帖催你打补丁:PHP 出大事了》

一国首相提醒大家给一门编程语言打补丁,还建议实在不行就先关站。从业这么多年,这种场面我还是第一次见。

这个细节的冲击力比 CVSS 9.2 大得多。分数是给安全团队看的,首相发帖是给公众看的。一门语言的漏洞走到这一步,说明它已经从技术事故变成了公共事件——欧洲多国政府网站 precautionary 下线,日本那边连银行和札幌市都被点了名。

4. 骂"草台班子"派:这次知乎最有火药味的一支

这一派骂的不是漏洞,是发布过程。同一篇专栏把时间线捋了一遍:

  • 10/20 15:20,Hacker News 出现爆料帖,随后被删,帖子里传的是个错的分数(10.0,实际 9.2)
  • 10/20 16:39,安全研究员 Kevin Beaumont 公开点名两个 CVE
  • 同一晚八点,Calif 误发了一段打真实目标的 PoC 视频,视频删了,截图还在传
  • 10/21 早上 7:41,离约定时间还有六个多小时,Chainguard 单方面发布了带补丁的镜像

作者的态度很明确:

提前六小时,等于给攻击者六小时的免费预读。
问题不在判断对不对,在于这个判断应该所有人一起做,不该由一家做。
一个漏洞的静默期,是所有下游厂商拿命换出来的,谁先开口,谁就把这段窗口烧掉了。

Chainguard 的理由是"我们判断野外已经有利用了"。这个理由在 Hacker News 上撕裂成两派,一派骂 irresponsible,一派说谢谢。知乎这边基本倒向不该抢跑。

顺带一提,PHP 官方原定 10 月 22 日发布,因为细节提前泄漏,硬生生把时间提到了 21 日。一次本该按剧本走的协调披露,被各方抢跑推着提前了一天。

5. AI 焦虑派:那道墙,两周就拆完了

《PHP 惊天漏洞曝光!AI 挖出十年大雷!全球拉响警报!》

这一派关心的不是 PHP,是"以后怎么办"。因为这两个洞并不是没人看见:

  • 2020 年就有人报过,bug #78876,一个超长变量名引发 OOM,顺带临时文件没清。当时的处理是绕开具体触发点,没动"分配失败之后怎么收尾"这个根上的事。
  • 2024 年 OSTIF 出钱、Quarkslab 做的审计又摸到了同一个地方,结论是理论上能利用,但没有可用的利用路径,于是继续压着。

这个判断在当时不算错。要在引擎的内存管理里把一堆半初始化的指针接成一条能执行的链,还得适配每个目标的内存布局,难度确实卡在人类研究员的极限附近。

变的是成本。Wiz 用 Wiz Atlas 加 Gemini 4 Argon 加 GPT-5.6 Sol,8 月 19 号找到第一个洞,8 月 20 号在 Drupal 上打出未授权 RCE,8 月 21 号在 WordPress 上打出来,8 月 24 号报给 PHP 安全组。Calif 的 Ryan Austin 则用 GPT-5.6 Sol 在 8 月 11 号报的。OpenAI 通过"Patch the Planet"计划牵头做了约两个月的协调修复。

那位作者的原话:

从"这个洞理论上危险"到"这个洞今天下午就能打",中间隔的那道墙,AI 两个星期拆完了。

这个洞在代码里躺了二十年,被人读过、审过、修过,还是没修干净。过去我们还能靠"太复杂了没人搞得定"当一层缓冲,现在这层缓冲正在变薄。

问题下还有人把当天连着爆的几个安全事件串在一起,造了个词:"2026 年 10 月 22 日 网安二向箔大爆炸日"。

三、少数冷静的技术纠错

知乎上真正有用的内容不多,但有一条值得单独拎出来。网上传得最凶的缓解措施是"关掉 session.upload_progress 就安全了",而它只挡 CVE-2026-109619 的 session 那条路径,对 CVE-2026-109618 一个字都不管——109618 的公告里压根没提 session。

把这两条混成一条的人不少。关错了开关,还以为自己安全,这比不关更麻烦。

另一条反直觉的:缓解措施里排第一的是把 memory_limit 调成 -1,也就是把限制放开。这不是加固,是把可控的失败点拿掉;真出事的时候用容器或者 cgroup 兜住可用性。

至于哪些招没用,知乎上的共识很一致——因为漏洞触发在应用代码执行之前:

  • WordPress 安全插件(包括开了 Extended Protection 的 Wordfence,它靠 auto_prepend_file 加载,跑起来时 PHP 早把请求体解析完了)
  • file_uploads = Off
  • disable_functions 禁掉 system 之类
  • 上传大小限制(没有所谓的安全阈值,post_max_size = 0 反而是无限制)
  • Laravel 维护模式、应用层中间件、登录校验
  • WAF 只在"服务器不能被直接访问"的前提下有用;攻击者直接拿 IP 打过来,CDN 就绕过去了

四、几句观察

第一,这次知乎的讨论质量比以往高。 没有停留在"PHP 药丸",几篇专栏都写到了内存模型、静默期伦理、AI 降低利用门槛这三层。尤其是把 2020 年的 bug #78876 和 2024 年的 Quarkslab 审计挖出来对照,这是真读了材料的写法。

第二,情绪的重心不在技术上。 大家最在意的两件事都不属于"漏洞"本身:Chainguard 提前六小时发镜像算不算背刺,以及 AI 让"太复杂没人搞得定"这层缓冲失效之后,下一个是谁。前者是行业伦理问题,后者是整个安全行业的结构性问题。

第三,8.1 及以下那批机器是真正的隐痛。 Mallory 统计 Shodan 数据,10 月 20 日对外暴露且 HTTP 头里报了 PHP 版本的主机约 150 万台,其中约 88.4 万台报的是 8.1 或更老,占 59%。PHP 官方这次为 7.4、8.0、8.1 放了最小化的源码回溯补丁,但那是给会自己编译的人用的,不是官方二进制。剩下的人,只能要么一直挂着两道缓解措施,要么趁这次迁走。

第四,"最好的语言"这个梗这次不太好笑了。 它以前是自嘲,现在带着点别的味道——毕竟当一门语言的基础设施地位高到"一崩带走七成网站"的时候,它好不好用已经不重要了。


附:事实卡片

项目 内容
漏洞 CVE-2026-109618(OOM 损坏)、CVE-2026-109619(陈旧全局状态 UAF)
统称 PHP2Shell
评分 CVSS v4.0 均为 9.2
披露 2026-10-21 14:00 UTC(北京时间 22:00)
修复版本 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35
影响范围 PHP 5.4 起,8.1 及以下无官方二进制补丁(有源码回溯补丁)
发现方 Wiz(独立发现)、Calif / Ryan Austin(GPT-5.6 Sol),OpenAI "Patch the Planet" 牵头协调
暴露面 约 70% 网站依赖 PHP;150 万台暴露主机中 59% 跑 8.1 或更老
官方缓解 memory_limit=-1 + 限制请求体大小;session.upload_progress.enabled=0;PHP 8.5 再加 fatal_error_backtraces=0

官方公告:

知乎原文: