我知道,大家听到的都是它,还有数字 4。这里确实有个漏洞,也重要,但难利用,远不如 Log4Shell、心脏出血(Heartbleed)、RoRYaml。这个 PHP(PHP)漏洞没那么容易利用;5 年前人们还能理解,现在却被自己的大语言模型(LLM)误导,以为有了可用攻击。GitHub(GitHub)上有成千上万个 PoC 脚本,面对原生 PHP 实例都不起作用。在 Docker(Docker)里搭个自认为有漏洞的 PHP 服务器,亲自跑 PoC,别让大语言模型代劳;这些脚本根本不生效。
正文
我知道,我知道。你听到的全是这件事,还有那个数字 4。
别误会,这里显然有个 bug,而且它确实很重要。但这并不容易利用。它肯定远不如 Log4Shell、Heartbleed、RoR YAML 等那么容易。
为自己辩护吧,疯子!
我不认为这个 PHP 漏洞有那么容易被利用。我觉得 5 年前人们能明白这一点,但现在人们被自己的 LLM 欺骗了,LLM 告诉他们有漏洞利用,其实他们并没有。
如果你现在去 GitHub 看,那里有成千上万、真的是成千上万个针对这个漏洞的“PoC”漏洞利用。不过你会注意到它们的一个共同点:它们都对原版 PHP 实例无效。
来吧,在 Docker 里搭一个你认为有漏洞的 PHP 服务器,然后亲自运行那些 PoC。别让你的 LLM 替你运行。不。你自己运行脚本。那些漏洞利用根本不工作。
漏洞利用在哪儿,Lebowski?
我觉得很多人都曾以为,LLM 只要读一下 diff 就能立刻构造出利用链;而且即便这个漏洞比其他漏洞更难利用,LLM 也会拉平差距。结果呢。没有可用的漏洞利用。现在怎么办?
当我想到互联网上那些“我们完蛋了”的 CVE10s 时,我想到的是下面这些漏洞:
- RoR YAML 解码(发送一个包含恶意 YAML 的 POST 请求体)
- Log4Shell(把 User-Agent 设为
${jdni:ldap:}) - Shellshock(复制
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"并按需修改) - Heartbleed(索取
Content-Length: 10000000)
这些漏洞一上新闻,立刻就有僵尸网络四处传播并造成破坏。那还是没有 LLM 的时候!人们得亲手编写僵尸网络。用他们的手!
这个漏洞公布已经 10 小时,半个软件世界都在盯着它,天知道有 10 万人把他们的“超级智能”投入到此事。然而,仍然没有可用的漏洞利用。流传的那些要么是假的,要么只在实验室里有效,因为……
该死的 LLM,伙计。
脚本小子(以及同样把大脑关掉的“脚本成人”)现在都觉得:好吧,他们不懂 UAF 利用链,但 Claude 这家伙什么都知道,完全能搞出一个漏洞利用。
滑稽的是,结果就是 LLM 递给他们的“弟弟”一个没插电的控制器。它满屏都写着“漏洞利用”,还有一些冒烟枪式的确凿记录……但它其实修改了你要测试的服务器,让它带上一个严重漏洞。作弊!!
- https://github.com/david-alvarez-rosa/php-rce
- https://github.com/eness/php2shell-CVE-2026-109618-CVE-2026-109619-PoC
- https://github.com/ikow/php2shell-poc
这些“PoC”大多数有一个非常滑稽的共同点:它们依赖“LFI”(本地文件包含,local-file-inclusion)来制造漏洞。用非 PHP 的术语说,它们的利用链要求服务器实际上执行 eval(read(filename_provided_by_user))。
PHP 应用在某种意义上出问题并不罕见,但要求服务器本身已存在一个漏洞,让人能 cat /etc/password,这是一个极其离谱的前置条件。如果你需要这个,那这就算不上严重 bug。
最奇怪的是,这么多人都“独立”犯下了这种极其怪异的判断错误。这是因为他们并没有独立做出这个决定。是 Claude/Etc. 替他们做了所有判断,于是逻辑错误出现了这种诡异的分布。
这里有个值得说的重要现象:如今有多少人让 Claude/GPT 替他们做设计决策,AI 在当下世界成了主要决策者。于是出现了这种诡异的“决策谢林点”(Decision Schelling Points):某种解决问题的方法被极度过度代表,因为这就是 Claude 开箱即用的做法。
在“现在大多数网站看起来都一样”这件事上,这很烦人;但因为 LLM 有能力同时毁掉每一个领域,这也意味着“现在大多数决策都出奇地相同”。尤其是眼下这种情况:AI 在服务器上插入一个漏洞……只为证明该服务器能被你那个“攻破任意 PHP 实例”的攻击利用!
那大家为什么这么害怕?
因为:
- 一名 PHP 核心团队成员称这是灾难性的(“补丁发布 15 分钟后漏洞利用就会出现”)
- 我们心底都知道 PHP 不安全
- 漏洞利用视频里有个动漫少女
- 我们都知道 LLM 正像 100 吨重的契诃夫之砧(Chekhov's anvil)一样笼罩在互联网上方,而且我们知道代码并不安全
我们以前也经历过类似的事情,但还没在 LLM 时代经历过。对我们来说幸运的是,今天似乎还不是那一天。它太难被轻易利用了。这不是 Log4J 时刻。
评论
多数评论不认同原文淡化风险的态度,认为 PHP 核心运行时的 RCE 已在 PHP-FPM、Apache mod_php 与常见 CMS Docker 镜像中被确认,属于必须立刻修补的真实威胁。也有不少人把焦点转向披露混乱、安全厂商营销站和社交媒体放大,认为恐慌来自 12 小时信息真空与 PoC 被夸大,实际大规模武器化未必会像 EternalBlue 那样被长期即插即用。
认为漏洞是真实且严重的 RCE,不能轻描淡写
- 多个评论指出官方 PHP 安全公告已确认 PHP-FPM 与 Apache mod_php 上的真实 RCE,WordPress、Joomla、Drupal 等常见 Docker 镜像也可被利用;RCE 只要能执行某段不该执行的代码,就足以链式提权或配合 LFI 拿下系统,且问题出在 PHP 核心运行时,比只影响第三方日志库的 Log4Shell 更值得警惕。(较多人) > RCE 真正可怕的不是能执行任意代码,而是能执行某段本不该执行的代码,门缝里塞进一根撬棍就足够后续提权。(@0xbadcafebee)
认为恐慌被披露失败、厂商营销和社交媒体放大
- 许多评论把批评指向事件前 12 小时的信息真空:外界只看到“CVSS 10 / RCE”和互相矛盾的变通方案,连官方首脑也出来发警报,而掌握细节的人却迟迟不澄清;与此同时 AI 与安全公司做出大量漂亮但无实用价值的专题站点,把漏洞包装成营销事件。大家认为即便最终没有想象中易利用,也没人能提前知道,真正失败的是过时的披露体系。(较多人) > 那 12 小时里没人知道发生了什么,有能力安抚大家的人却似乎在火上浇油,这是披露体系而非漏洞本身的失败。(@Tadpole9181)
质疑 PoC 质量与实际利用门槛,但不一定否认风险
- 有评论者实测 GitHub 上的 PoC:一个其实要求已存在本地文件包含(LFI),另一个开箱根本跑不通,只触发陈旧写问题而非真正 RCE,因此怀疑“PHP 史上最严重漏洞”的说法;也有人指出 UAF 能否提权到高于 PHP 自身权限并不明确,不能拿 LLM 生成的失败代码反证不可能。这类怀疑多数仍落在“别神化 PoC”,而非“别打补丁”。(少数人) > 我跑了两个 PoC,一个其实只是已有 LFI 的换皮,另一个开箱连 RCE 都没演示出来,只触发了陈旧写问题。(@kgeist)
认为不会变成 Log4Shell 式的全球一键武器化,但仍应修补
- 部分人把事件类比 Broadpwn 或 Heartbleed:技术上严重、影响面广,但不会成为一按就通的“万能 PWN 按钮”;高价值目标因预警及时大多已修补,真正残留风险在无人维护的遗留机器。细节公开后攻击者会很快补出稳定利用,所以结论是“多数情况雷声大,但补丁必须立刻打”。(少数人) > 它更接近 Broadpwn:技术上严重、范围极广,却永远不会变成一按就通的万能 PWN 按钮。(@hn773746483)
认为“利用难”不等于安全,武器化后会即插即用
- 针对“PoC 难、需要专业知识”的安慰,有人反驳:难度只影响第一次,专家做出武器化利用后,所有政府和攻击者都能即插即用;破解 iPhone 并不容易,但可靠武器化漏洞早已在黑产和政府间流通。因此不能用当前 PoC 粗糙来证明风险低。(少数人) > 难度不影响结论,因为你只需要一次专家能力,之后所有人都能复用结果;iPhone 并不好破解,但武器化 exploit 已在黑市上即插即用。(@pinevale)
认为证书事件被 PHP 漏洞掩盖且被 AI 淡化
- 少数人注意到讨论几乎被 PHP RCE 完全占据,而 eMudhra CA 证书事件在他们看来至少有同等量级的影响;更反直觉的是,本地大模型反而淡化证书风险,声称只要不在正确网络位置就无法中间人攻击,而大多数 IoT 设备早已修补。(少数人) > 我的本地模型还想说服我 eMudhra CA 那件事没什么大不了,因为要“处在正确位置”才能做中间人攻击。(@amstan)
有价值的补充
- 有回复指出,文章列出的几个“真正完蛋”的 CVE-10 级漏洞全都不是内存安全漏洞,而是各层解释器或应用逻辑里的逻辑漏洞;安全研究者往往埋头攻内存安全这类相对没那么致命的部分。(@ajross)
- 一个仍待澄清的技术细节:这个 UAF 里指向“已释放”内存的指针,究竟还指向 PHP 进程保留的内存,还是指向可被其他进程占用的真正空闲地址,这关系到利用能否稳定提权。(@noduerme)
- 补充参考:LiveOverflow 有视频梳理这波流传的“假利用”,早期 PoC 里混有不可信或演示不完整的样本。(@easterncalculus)
- 玩笑式但反映社区情绪的更新:别再叫脚本小子了,现在该叫“LLM 小子”。(@tamimio)