一天爆四个:PHP、Node.js、Go、Rust 全部中招,附完整修复清单
原创
关键词
关键词
青元安全
2026年10月22日 00:36
浙江
去阅读
2026 年 10 月 21 日这一天,安全圈有点热闹。
PHP 核心爆了两个 CVSS 9.2 的远程代码执行,Node.js 跟着发了一个 Brotli 越界写,Go 和 Rust 也没躲过,双双栽在同一批中间证书上。
这次的重点不在漏洞本身,而在于它们的层级:这四个洞全都在「运行时」,不在你的业务代码里。
你网站程序写得再规范、面板再干净、WAF 规则再全,都不顶事。要修,只能升运行时。
一、30 秒速览
| 组件 | 编号 | 修复版本 | 优先级 |
| PHP | 109618 / 109619 | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 | 最高 |
| Node.js | 111497 | 22.23.4 / 24.22.1 / 26.12.1 | 最高 |
| Go | 111943 | 1.27.3 / 1.26.10 | 高 |
| Rust | RUSTSEC-2026-0382 | rustls-webpki ≥ 0.103.16 | 中高 |
(编号均省略前缀 CVE-2026-)
二、PHP:两个 9.2 分 RCE,先修它
两个洞都出在 PHP 处理请求的底层流程里:
- CVE-2026-109618
:内存耗尽(OOM)异常时,部分内部请求数据没被正确初始化,却在清理流程里被继续使用了。
- CVE-2026-109619
:某些全局状态在关联内存释放后仍然留着,同一个 worker 处理下一个请求时复用了这批失效数据,是典型的 use-after-free。
PHP-FPM、Apache mod\_php、php-cgi、FrankenPHP、LiteSpeed 全都受影响。官方特别点名 mod\_php 风险最突出,已经有「未认证请求在业务代码运行前就能触发」的验证案例。
翻译一下:攻击者不需要你的网站有任何漏洞,甚至不需要登录。
PHP 官方发布以下安全修复版本:
还在跑 8.1 及更早版本(包括大量 5.6、7.x)的,官方不修,只能靠发行版 backport 或者迁移。
三、Node.js:Brotli 越界写,别只看代码
Brotli 是 HTTP 里最常用的压缩算法之一,Node.js 把它做进了内置 zlib 模块。问题出在块类型切换的非法编码状态——声明的块类型数量和实际切换次数对不上时,没及时拒绝,继续往下走就触发了越界写入。
越界写 → 内存破坏 → 特定条件下劫持控制流 → RCE。
这次 Node.js 一口气修了 10 个 CVE(4 高危 / 3 中危 / 3 低危),另外 3 个高危都跟证书校验绕过有关:
-
CVE-2026-105483:TLS 主机名校验被全角数字绕过
-
CVE-2026-106069:主机名松散解析为 IP 导致校验绕过
-
CVE-2026-105482:dns.resolve 遇 NUL 字符截断域名
## 四、Go 和 Rust:其实是同一件事
这两条看着是两个公告,根子是同一个——印度持牌 CA 机构 eMudhra(品牌名 emSign) 的 8 张中间证书出事了。
Mozilla 的分析结论相当离谱:这 8 个 P-384 椭圆曲线私钥,对应的整数全部小于 256,实际值是:
正常 P-384 私钥应该有约 384 位随机性,这批只有几个位的有效信息,穷举几秒钟就能算出来。不是「泄露」,是签发时用的密钥生成器本身就有缺陷。其中 6 张用于签发 HTTPS 证书,2 张用于代码签名——拿到私钥,就能给任意域名签「合法」证书做中间人,或者给恶意软件签一个「已验证发布者」。
Go 这边错在哪:crypto/x509
的 Certificate.Verify 构建出到信任锚的证书链后,没有过滤掉包含已撤销中间证书的路径。而 Linux 系统根存储无法把撤销状态传播到应用层,所以哪怕 CA 已经撤销、浏览器已经封禁,Go 程序拿着这条链去校验,依然返回可信。
修复版在过滤候选链时按 SHA-256 SPKI 哈希匹配并拒绝这批中间证书,命中就把整条链从结果里删掉;Darwin 和 Windows 的系统校验同步做了相同过滤。
同一批事件还波及 Electron(44.9.1 / 43.8.1 / 42.11.16)、Python certifi(2026.10.19)、NSS(3.131.1)、webpki-roots(1.0.10),用 Electron / Tauri 打包的桌面客户端也要跟着升。
## 五、半小时自查清单
宝塔、多版本共存的环境,一定要用 phpinfo 或 php-fpm -v 复核,php -v 看到的经常不是 Web 实际跑的那个版本。这是踩坑最多的一步。
六、三个最常见的误区
①「我装了 WAF 就没事」PHP 这两个洞在运行时层,WAF 拦不住合法请求触发的内存破坏。
②「升级工具链就等于修好了」Go 必须重新编译二进制,Node 必须重建镜像 / 快照 / 单文件应用。老产物会一直带着洞跑。
③「跑个检测脚本最快」不要运行来源不明的漏洞检测 / 修复脚本,那是二次安全风险的经典入口。只用官方公告和可审计的开源工具。
最后:浏览器 10 月 17 日就封禁了这批证书,Go 19 日才发版,Node.js 21 日才跟上。你的系统是否安全,取决于你依赖的最慢那个上游。
而资产清单和版本台账,这两件最不性感的事,才是应急响应速度的真正上限。平时不做台账,事发时就只能靠猜。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论