10月21日安全事件全记录:PHP2Shell 紧急补丁、Node.js 高危漏洞、Go 移除被攻破的 CA 证书
过去 48 小时,PHP、Node.js、Go 三大语言生态同时发布紧急安全更新,根源之一是一个”私钥只有 1 字节”的证书机构事故。本文梳理完整时间线,并给出自查与升级清单。

一句话时间线
| 时间 | 事件 |
|---|---|
| 10 月 17-20 日 | 证书机构 eMudhra 中间证书私钥被证实可被重建,Chrome/Apple/Microsoft 相继拉黑 |
| 10 月 20 日 | Go 发布 1.27.3 / 1.26.10,从信任库移除问题 CA;Firefox 紧急发版 |
| 10 月 21 日 | PHP 紧急发布非计划补丁,修复两个 CVSS 9.2 的 RCE(PHP2Shell);Node.js 发布安全更新 |
一、证书机构 eMudhra 事故:私钥只有 1 字节
这是本轮事件的”震中”,也是整个互联网基础设施层面的事故。
发生了什么: 印度证书机构(CA)eMudhra 的 8 个中间证书私钥被研究人员从公开数据中重建出来。原因是密钥生成时用了小于 256 的整数初始化,而不是密码学安全随机数——P-384 椭圆曲线私钥本该是 48 字节,实际只有 1 字节有效。
8 个私钥的值分别是:4、56、66、115、155、156、230、237。不需要暴力破解,把 0 到 255 枚举一遍就全出来了。
为什么严重: 持有中间证书私钥的人,可以为任何网站签发”合法”的 TLS 证书。也就是说,攻击者可以对任意 HTTPS 站点实施中间人攻击,浏览器的小锁完全失效。
各方响应速度:
- Chrome/Google 产品:10 月 17 日已屏蔽
- Apple:10 月 19 日屏蔽
- Microsoft:10 月 20 日屏蔽
- Firefox:10 月 20 日发布 158.0.1 / 153.5.1 / 115.43.1,更新 NSS 3.131.1
- 各 Linux 发行版(Ubuntu/Debian/Arch/Gentoo)陆续更新 ca-certificates 包
- Python certifi、Electron、RustTLS、curl、Go 同步更新
事件详情页(可自测浏览器是否已更新):https://emudhra.we-have-a-problem.com/
二、Go:1.27.3 / 1.26.10 专为此事发布
10 月 20 日 Go 发布两个小版本,唯一的安全修复就是这件事:
crypto/x509: mitigation for security concerns with a specific Certificate Authority。Verify 将过滤掉包含这些中间证书的信任链。
对应 CVE-2026-111943。Go 官方原话是”强烈建议立即升级”。
升级:
# 检查当前版本
go version
# 官方下载页:https://go.dev/dl/
# 目标版本:go1.27.3 或 go1.26.10三、PHP2Shell:两个 CVSS 9.2 的 RCE,紧急补丁
10 月 21 日,PHP 发布非计划安全更新,修复两个远程代码执行漏洞:
- CVE-2026-109618:内存分配失败后,清理例程处理了无效数据
- CVE-2026-109619:PHP worker 复用了上一个请求的陈旧状态
两个漏洞 CVSS v4.0 评分均为 9.2(Critical)。
几个关键事实(Datadog Security Labs 已独立复现确认):
- 应用层认证拦不住。恶意请求在到达任何应用代码之前就被 PHP 处理了——即使你的代码只有一个
echo,站也一样被打。
- 应用层认证拦不住。恶意请求在到达任何应用代码之前就被 PHP 处理了——即使你的代码只有一个
- 不需要爆破、不需要崩溃。攻击者可以用校准的内存布局加几个预备请求绕过 ASLR。
- 社区流传的缓解措施无效。比如设置
session.upload_progress.enabled=0,实测挡不住。只有打补丁这一条路。
- 社区流传的缓解措施无效。比如设置
- 漏洞利用代码在补丁发布前已提前泄露,PoC 已经公开,随时会被大规模扫描。
受影响的版本与修复版本:
| 版本线 | 状态 |
|---|---|
| PHP 8.2 | 升级到 8.2.35 |
| PHP 8.3 | 升级到 8.3.36 |
| PHP 8.4 | 升级到 8.4.27 |
| PHP 8.5 | 升级到 8.5.12 |
| PHP 5.x – 8.1 | 同样受影响,但已 EOL(停止维护),没有补丁,必须升级大版本 |
自查:
php -v版本低于上表修复版本的,立即升级。下面按部署环境分开给命令。
① 宝塔面板(最常见):
软件商店 → 搜索 PHP → 安装修复版本(如 PHP 8.3.36 / 8.4.27)→ 网站 → 设置 → PHP 版本切换到新版。切换后检查站点是否报错,老 WordPress 主题/插件如果只兼容旧版 PHP,先在测试环境验证再切。
② Ubuntu / Debian(apt 安装的 PHP,用 ondrej 仓库):
# 查看当前版本
php -v
# 添加 ondrej 仓库(Ubuntu 22.04/24.04 通用)
sudo add-apt-repository ppa:ondrej/php
sudo apt update
# 安装修复版本(以 8.3 为例,对应 8.2/8.3/8.4/8.5 改数字即可)
sudo apt install php8.3 php8.3-fpm php8.3-cli php8.3-mysql \
php8.3-gd php8.3-mbstring php8.3-xml php8.3-curl php8.3-zip
# 重启 PHP-FPM 生效
sudo systemctl restart php8.3-fpm
# Apache 用户则重启 Apache:sudo systemctl restart apache2③ CentOS / RHEL / Rocky / AlmaLinux(Remi 仓库):
# EL9 用 9,EL8 把 9 换成 8
sudo dnf install epel-release
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
# 重置 PHP 模块并装修复版本(8.3 为例)
sudo dnf module reset php
sudo dnf module install php:remi-8.3
sudo systemctl restart php-fpm④ lnmp.org / oneinstack 一键包:
# lnmp.org(进入安装目录,按提示选版本号)
cd ~/lnmp2.x && ./upgrade.sh php
# oneinstack
cd ~/oneinstack && ./upgrade.sh⑤ 编译安装的 PHP: 无法原地升级,用新源码按原 configure 参数重新编译再替换。原参数用 php -i | grep configure 能翻出来。
⑥ Docker / 容器环境:
# 镜像 tag 固定到修复版本并重建,例如 php:8.3-fpm → php:8.3.36-fpm
docker compose down && docker compose up -d --build⑦ Windows 直接跑的 PHP: 去 windows.php.net 下载修复版本 zip,备份 php.ini 后覆盖替换。
⑧ 虚拟主机用户: 联系服务商升级,这是他们的责任;不给升的赶紧换——PHP 5.x~8.1 连补丁都没有,PoC 已公开,随时被批量扫描打点。
被入侵的排查线索: 异常大的表单提交记录、请求初始化阶段的内存耗尽报错、服务器上出现来源不明的 shell 进程。
四、Node.js:一次修了 10 个漏洞,含一个 RCE
10 月 21 日 Node.js 发布安全更新,覆盖 26.x / 24.x / 22.x 三个版本线:
- v22.23.4(LTS)
- v24.22.1(LTS)
- v26.12.1(最新)
重点关注的高危项:
| CVE | 问题 | 级别 |
|---|---|---|
| CVE-2026-111497 | Brotli 解码器越界写入,可导致远程代码执行 | High |
| CVE-2026-105482 | dns.resolve 截断含 NUL 字符的域名 | High |
| CVE-2026-105483 | IP 写成全角数字时 TLS 证书主机名校验被绕过 | High |
| CVE-2026-106069 | 主机名宽松解析为 IP 时 TLS 证书校验被绕过 | High |
另外还有个比较有意思的中危:CVE-2026-106074——crypto.randomUUID() 和 randomInt() 的熵缓存被存进了启动快照,导致每个进程重复生成相同的”随机”值。如果你用到了 Node 的 startup snapshot / SEA 打包,随机数可能一直是同一串。
本次更新还同步修复了 eMudhra CA 的证书信任问题。
升级:
node -v
# nvm 用户
nvm install 24.22.1 --reinstall-packages-from=current
# 直接安装用户去官网下载对应版本
# https://nodejs.org/en/blog/vulnerability/october-2026-security-releases五、普通用户和站长该做什么
普通用户:
- 更新浏览器(Chrome/Edge/Firefox/Safari 全都发了相关更新);
- 可以用 https://emudhra.we-have-a-problem.com 检测浏览器信任库是否已更新。
站长/服务器:
# 1. PHP(最紧急,PoC 已公开;各环境升级命令见上文第三节)
php -v # 低于 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 立即升级
# 2. Node.js
node -v # 目标 22.23.4 / 24.22.1 / 26.12.1
# 3. Go
go version # 目标 1.27.3 / 1.26.10
# 4. 系统 CA 证书(按发行版选对应命令)
# Ubuntu / Debian
sudo apt update && sudo apt install --only-upgrade ca-certificates
# CentOS / RHEL / Rocky / AlmaLinux / Fedora
sudo dnf update ca-certificates # 老系统:yum update ca-certificates
# Arch Linux
sudo pacman -Syu ca-certificates-mozilla
# openSUSE
sudo zypper update ca-certificates-mozilla
# Alpine
apk update && apk upgrade ca-certificates
# macOS(Homebrew)
brew update && brew upgrade ca-certificates系统 ca-certificates 包还没出更新时的应急方案(手工拉黑两张问题证书):
# Debian / Ubuntu:屏蔽 emSign ECC Root CA G3 与 Comodo AAA Services root
sudo sed -i \
-e 's|^mozilla/emSign_ECC_Root_CA_-_G3.crt|!&|' \
-e 's|^mozilla/Comodo_AAA_Services_root.crt|!&|' \
/etc/ca-certificates.conf && sudo update-ca-certificates验证系统信任库是否已修复:
# 1. 看 ca-certificates 包版本(Ubuntu 修复版为 20260816ubuntu0.2*.04.1,Debian 为 20250419+deb13u1)
dpkg -l ca-certificates
# 2. 确认问题证书已从信任库移除(输出为空 = 已移除)
awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' \
< /etc/ssl/certs/ca-certificates.crt 2>/dev/null \
| grep -iE 'emSign ECC Root CA - G3|Comodo AAA Services root' || echo "OK: 问题证书已不在信任库"
# 3. 浏览器侧自测:https://emudhra.we-have-a-problem.com/开发者的 CI/构建环境同样要检查:Docker 基础镜像里的 PHP/Node/Go 版本、公司内部服务、客户部署的环境,都在受影响范围内。
总结
这一波事件的教训其实就一条:密钥生成必须用真正的密码学安全随机数。eMudhra 用 1 字节”随机数”生成了中间证书私钥,直接动摇了一整条信任链,逼得浏览器厂商、操作系统、Go/Node/Python 全部紧急发版。而 PHP2Shell 再次证明:语言本身的历史包袱(PHP 5-8.1 全部无补丁)在关键漏洞面前就是定时炸弹。
如果你的服务器还在跑旧版本 PHP,今天就是升级的日子,别等。
参考来源
- Datadog Security Labs 技术分析(PHP2Shell):https://securitylabs.datadoghq.com/articles/php2shell-critical-vulnerabilities-in-php/
- Node.js 2026 年 10 月安全发布:https://nodejs.org/ja/blog/vulnerability/october-2026-security-releases
- Go 安全公告(oss-security):https://www.openwall.com/lists/oss-security/2026/10/20/29
- eMudhra 事件详情与自测:https://emudhra.we-have-a-problem.com/

![私有化部署源码[2026-10-08更新]-可达鸭小栈](https://img.ikdya.com/wp-content/uploads/2026/04/20260409080657504.jpg)












暂无评论内容