SIG 5126 5137 字 约 13 分钟 建站实战 / 建站雷达

建站雷达(10.22–10.25):几百万次打不穿 PHP2Shell,eMudhra 直接退场

这三天没有新的 WordPress 核心版本。动的还是上周那两条线:PHP2Shell 的补丁发出去之后攻击量按小时涨,到周日下午仍没有一例被公开确认的 RCE;证书那条线更干脆,eMudhra 宣布不干了。

PHP2Shell:几百万次尝试,没人报成功(10 月 22–23 日)

10 月 21 日 13:30 UTC,补丁比公告写的 14:00 早了半小时落地:8.5.12、8.4.27、8.3.36、8.2.35。7.4、8.0、8.1 只有源码级 backport,得自己编,发行版当天也没跟上。

第二天数字开始失控。Cloudflare 给出三段台阶:公告前 10 小时整网几千次,公告后 45 分钟几万次,两小时内几十万次,到 22 日已是几百万次。Censys 从 21 日起扫,累计记到 4100 多万个版本号带洞的 PHP 服务,一周里约 800 万个升掉了,到 23 日仍有 3440 万;德国排第二,1100 万个服务里 420 万个没动。

「打了多少」和「打穿几个」是两件事。CrowdStrike 与 Sophos 的蜜罐都只看到扫描和投放尝试;Sophos 拦下的一次投递是 Mirai 变种 Potassium。变的是荷兰 NCSC,从「只看到尝试」改成「正在核查首批成功信号」。VulnCheck 做出了绕 ASLR 的利用,靠内存泄露把两个洞串起来,覆盖 8.4.10 到 8.4.26,只发给客户。

还有一层麻烦是假的。GitHub 上冒出几百个 PoC 仓库,真能用的极少,其中一批是恶作剧木马,跑起来只改掉你的壁纸。

10 月 23 日 PHP 又补了 CVE-2026-115560,21 日的补丁不覆盖它:只有 session.serialize_handler 是 php_binary 或 php_serialize、又在 session_start() 前用 ini_set 改回 php、还开着上传进度条的站才中。PHP 建议干脆把 session.upload_progress.enabled 关掉,等下一个常规版本再开。

左栏是补丁覆盖到哪里,右栏是三天里攻击量与未升级服务的实际情况
补丁覆盖到哪里,攻击量涨到哪里。(图解与图片来源:本文制作,依据 PHP 官方公告与 Censys、Cloudflare 数据)

Node2Shell:补丁第二天有 PoC,第三天有人跑通(10 月 22–23 日)

10 月 21 日 Node.js 一次发了 10 个洞的补丁——22.23.4、24.22.1、26.12.1,四个高危。最要紧的 CVE-2026-111497 在 Brotli 解码器里:遇到非法的块切换本该报格式错误,却当成「还要更多数据」,往一个 8 字节的内部缓冲里接着塞,越界写。OpenAI 红队今年 2 月就报给了上游,代码改了,但没人当成安全问题,也没发版本。

22 日公开 PoC 出来,23 日 Imperva 在官方 Node.js 24.22.0 的 Linux arm64 镜像上跑出了代码执行,不用调试器也不改二进制,但要试很多次;24.22.1 直接拒掉同样的输入。

入口比想象的多。请求体带 Content-Encoding 为 br 时,Express 5 配 body-parser 2 会自动解开;服务端 fetch()、axios 拿到恶意服务器返回的压缩响应也会解开。裸的 Node HTTP 服务不解请求体,除非自己配了中间件。要修的也不只是 Node,Bun 1.4.4 和 Python 的 brotli 1.2.1 都发了。

同一批补丁还夹着两个 TLS 主机名校验绕过:全角数字写的 127.0.0.1 没被识别成 IP,就被拿去比对证书里的 DNS 名字;带前导零的 0127.0.0.1 按 WHATWG 读成八进制 87.0.0.1,系统解析器却按十进制读回 127.0.0.1。

左栏是哪些入口会被喂入 Brotli 数据,右栏是各运行时的修复版本
洞在解码器里,入口在中间件里,补丁散在三个运行时里。(图解与图片来源:本文制作,依据 Node.js 安全公告与 Imperva 分析)

eMudhra:不补了,退出全球 TLS 证书业务(10 月 23–24 日)

eMudhra 在 Mozilla 的讨论串里交代了根因。2025 年 4 月 30 日那场密钥生成仪式上,为测试密钥封装与解封装,脚本偏离了常规流程,多生成一组弱密钥;两组密钥标签又很像,操作的人拿错,用弱的那组做了 CSR,交给自家的根签了,其中几张还送去 Sectigo 交叉签名。HSM 是 Utimaco 的 FIPS 140-2 Level 3 设备,硬件没被攻破,是人把流程跑歪了。

处理方式在 24 日浓缩成一句话:自愿退出全球 SSL/TLS 证书业务,只保留印度本土的数字签名与电子签名。在用证书约 3 万张要迁,97% 走 ACME 自动换,换证由合作伙伴免费做。Chrome 27 日把 emSign ECC Root CA – G3 移出根库,Mozilla 同步摘根,并补发了 Firefox 158.0.1 和两个 ESR 版本,照顾那些关掉 RemoteSettings 的人。

社区顺手又翻出一条:10 月里 emSign Root TLS CA – G1 有一张 CRL 签名不对,是用 OCSP 证书签的。这家的问题不止那一场仪式。

左栏是浏览器端的封禁动作,右栏是站长要自己做的证书排查与迁移
浏览器按小时封,站长得按张换。(图解与图片来源:本文制作,依据 Google 安全博客与 CERT-In 公告)

两个插件洞:一个等评论过审,一个等你点导出(10 月 23–24 日)

LiteSpeed Cache 有 700 多万装量,7.9.2 修了三个洞,其中两个是同一类毛病,10 月 20 日就发了,23 日才由 WPScan 公开。113499 和 113500 就出在这上面:HTML 优化例程没有限定只处理样式表内容,会把闭合属性的那个引号删掉,配上主题不转义评论作者名,一条过审的评论就能在访客浏览器里跑脚本,包括正在看前台的登录管理员。条件很具体:允许评论且评论已公开,CDN Mapping 与 Include Images 都开着,或者 Font Display Optimization 设成了 Swap。

Prime Mover 那个更别扭。CVE-2026-115806,9.8,注入点在评论框,存的是一段序列化对象;真正引爆要等管理员点导出,插件把评论表搬进备份时才反序列化。能成链是因为插件自带的 Freemius SDK 里就有可用的 gadget。2.2.2 修了,但 Wordfence 的记录和插件 changelog 对「到底修没修」说法不一致,以 changelog 为准。

这几天你可以做什么

先确认你的 PHP 是不是 8.2.35、8.3.36、8.4.27、8.5.12。 CLI 和 FPM 常常是两个版本,两条都查;8.1 及更早没有安装包。

10 月 27 日之前查一遍证书链。 链到 emSign ECC Root CA – G3 的,那天之后在 Chrome 里直接不被信任。

LiteSpeed Cache 升到 7.9.2,然后手动清一次页面缓存。 光升不清,旧的 HTML 还在缓存里跑。

附:本文信息来源

一、一手信息

二、媒体报道

其他

  • PHP 8.1 及更早分支的最小化源码 backport(提交 31c0ea7d)
  • Cloudflare 关于 php2shell 攻击量的公开数据
  • Censys 的 php2shell 暴露面扫描页
  • eMudhra 在 Mozilla Bugzilla 中关于密钥生成流程的说明
  • Google 安全博客关于 emSign ECC Root CA – G3 摘根的公告

原创声明:本文由 618A 情报站整理撰写,基于公开信息与实测记录,转载请注明出处并保留原文链接。

上一篇 首页要下 3.8 MB:一台 WordPress 站的慢,一半在 PHP,一半在 PNG
下一篇 硬件雷达(10.22–10.25):影之刃零带火硬件联名,621.01 驱动翻车