PHP2Shell 漏洞修复与宝塔升级
两个 PHP RCE 漏洞的影响
CVE-2026-109618 涉及内存不足处理造成的状态损坏;CVE-2026-109619 涉及请求结束后遗留的失效全局状态。两者可能导致未认证远程代码执行。PHP-FPM、Apache mod_php、php-cgi 等处理 Web 请求的部署都应排查,不能因为使用 Nginx 或登录验证就认定安全。PHP 官方安全公告 OOM 漏洞说明 状态生命周期漏洞说明
PHP 官方修复版本
当前分支 | 本次修复版本 (php8.2~8.5的修复无效 目前rce仍然可用) |
|---|---|
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 8.3 应达到 8.3.36,不能只用“高于 8.2.35”作跨分支判断。发行版若采用补丁回移,还需核对安全公告和软件包修订号。官方修复公告
宝塔面板的处理步骤
确认每个站点实际使用的 PHP。 多版本并存时,逐站核对版本绑定,同时检查后台、接口站点和其他 PHP 服务。
备份并准备兼容性检查。 保存网站、数据库与 PHP 配置,记录扩展及关键运行参数。跨大版本升级应先验证程序、主题和插件。
更新对应 PHP 运行时。 核对宝塔或软件包供应方是否已提供包含补丁的构建。仅更新面板或网站程序不能证明 PHP 核心已修复。
替换正在运行的进程。 重启对应 PHP-FPM 服务,确认站点使用新运行时;容器部署需要重建或拉取修复镜像,再替换实际容器。
验证业务后恢复访问。 检查首页、登录、后台、上传和计划任务;若此前已限制公网访问,应保持限制直至验证完成。
以宝塔常见 PHP 8.3 安装目录为例,下面的命令用于查看磁盘上的二进制版本:
/www/server/php/83/bin/php -v /www/server/php/83/sbin/php-fpm -v
83 需按实际安装版本调整。这些结果不代表所有网站都已切换,也不能证明旧工作进程已退出。还应在受限访问条件下核对站点实际的 PHP_VERSION 与 PHP_SAPI,检查后删除临时诊断页面。宝塔官方路径和服务说明
PHP 7.4 和更早环境如何处理
PHP 安全团队此次额外提供了 7.4、8.0、8.1 的最小源码回移补丁。这些分支并未恢复常规维护,源码补丁也不等于面板已经提供可直接安装的更新包。旧系统应联系供应商确认补丁构建,并安排迁移到受支持分支;不能把上述回移范围扩展到 PHP 5.6 或所有 7.x。官方旧版处理说明
无法立即升级时的临时防护
对暂时无法更新的公网服务,建议先限制访问,或由 Web 服务器直接返回维护响应,避免请求继续进入受影响 PHP。不要通过删除 PHP 解析规则来实现维护,以免错误配置导致源码泄露。
官方列出的部分缓解措施包括:
session.upload_progress.enabled = 0
该配置只能阻断已确认的部分 Session 路径,不能完整修复两个漏洞。应在请求解析前通过 php.ini、FPM 池或服务端配置生效,并重启所有相关工作进程;不要依赖应用内 ini_set() 或 FPM 的 .user.ini。PHP 8.5 的 fatal_error_backtraces=0 也只针对特定路径。PHP 状态生命周期漏洞公告 官方配置适用说明
配置行前面不要保留分号 ;,否则它仍是注释。session.use_strict_mode=1 是会话安全设置,不能替代此次补丁。PHP 配置文件规则 Session 配置说明
对于官方提到的 memory_limit=-1,不要当成通用修复直接复制:它会取消 PHP 内存上限,底层分配失败仍可能触发漏洞;相关应急方案还涉及请求限制和进程资源边界。普通站点应优先完成升级,或在完成修复前减少公网暴露。PHP OOM 漏洞公告
Node.js 安全更新与实际进程替换
Node.js 本轮修复包括 Brotli 解码器越界写、DNS 名称处理、TLS 主机名校验等问题。其中 CVE-2026-111497 可能导致远程代码执行,但不能把所有条目都概括成 RCE。
当前分支 | 本次安全更新 |
|---|---|
Node.js 22.x | 22.23.4 |
Node.js 24.x | 24.22.1 |
Node.js 26.x | 26.12.1 |
以上三个修复版本均已发布。应按实际使用的受支持分支更新,具体影响条件见 Node.js 官方安全公告。
部署时需检查 systemd、PM2、容器及 CI 镜像实际调用的 Node 路径。只升级终端里默认的 Node,或只运行 npm update,不能证明线上服务已使用新的运行时。更新后重新启动相应应用进程,并验证接口、TLS 连接和压缩响应处理。
Java 安全补丁与 JDK 版本选择
Oracle 2026 年 10 月 CPU 是跨多个产品系列的安全更新。Java 用户需要确认应用实际使用的 JDK 供应商与分支,再更新对应构建。
Oracle JDK 分支 | 本次安全更新 |
|---|---|
8 | 8u511 |
11 | 11.0.33 |
17 | 17.0.21 |
21 | 21.0.13 |
25 | 25.0.5 |
27 | 27.0.1 |
这些编号来自 Oracle JDK 官方安全基线。8u503、11.0.32.1、17.0.20.1 等是本次 CPU 列出的受影响版本,不能作为修复目标。Oracle CPU 公告
使用 Temurin、Corretto、Zulu 或系统发行版 JDK 时,应核对原供应商的安全构建,无需为了修复强行更换发行商。Java 17、21 等环境可优先更新自身分支。
检查范围还应包括服务启动脚本、应用自带 JRE 和容器基础镜像。完成更新后重启 Java 服务,验证实际运行版本及核心业务,避免只更新系统默认 JDK。
MySQL 漏洞修复与数据库升级
数据库修复要先分清具体产品。MySQL Server、Router、Connector 和 Cluster 的版本体系及影响范围不能混用。
MySQL Server 当前范围 | 对应更新参考 |
|---|---|
8.4.0 至 8.4.12 | 8.4.13 |
9.7.0 至 9.7.3 | 9.7.4 |
26.7.0 至 26.7.1 | 评估升级至 26.10.0 |
版本依据为 Oracle CPU 及 MySQL 8.4.13、9.7.4、26.10.0 发布说明。8.4 和 9.7 用户应优先评估本分支更新。
建议按以下顺序操作:先完成可恢复的备份,验证升级兼容性;再更新测试或备用实例,检查业务查询与复制状态;最后按部署方式升级生产实例。提前准备恢复方案,避免假定新版本数据目录可以直接交给旧二进制使用。
如使用云数据库,应核对实例的引擎补丁状态和维护任务。更新本地客户端,不能证明远端数据库服务已修复。更老的分支应单独核对供应商支持与迁移路径。
LiteLLM 供应链事件的隔离与恢复
LiteLLM 1.107.0 的 PyPI wheel 被发现包含凭证窃取和远程代码加载组件,相关容器产物也需要排查。恶意文件可在 Python 启动时执行,即使业务没有导入 LiteLLM,也不能排除影响。Wiz 第一手分析
疑似受污染环境不要先运行 Python 或 pip 尝试降级。 这样可能再次触发恶意启动代码。应从安装记录、锁定文件、构建记录和镜像摘要确认是否使用过相关产物。
处置顺序建议为:
隔离受影响主机或容器,保留必要日志及安装记录。
在干净设备上撤销、轮换该环境能够访问的全部潜在暴露凭证,包括云密钥、AI 服务 API Key、数据库凭证、CI/CD 令牌,以及受影响的 SSH/GPG 私钥、浏览器密码和 LiteLLM master/virtual keys。
使用可信产物重建主机、虚拟环境或容器,同时排查内部包缓存和镜像仓库。
核对部署版本与镜像摘要,完成业务验证后再恢复服务。
原始报告给出的已检查回退版本是 1.106.2;应同时确认获取渠道与构建来源。上游删除投毒包、变更 latest 标签,或本地卸载软件,都不能自动清除此前已泄露的凭证和驻留进程。处置依据
Traefik 网关认证问题与更新
本轮 Traefik 公告涉及特定 Ingress NGINX provider 的 mTLS 配置失效等问题。例如,同一主机多个 Ingress 的 auth-tls 设置冲突时,客户端证书认证可能失效。这是 Traefik 相应功能的问题,不应写成所有 Kubernetes 集群均受同一漏洞影响。
相关 mTLS 问题自 3.7.15 修复;截至更新日期,官方还发布了包含后续安全修复的 3.7.16。实际部署应选择 3.7.16 或更新的受支持安全版本。mTLS 官方公告 3.7.16 发布说明
更新后应验证所有网关副本,并实际测试受保护入口是否拒绝没有客户端证书的请求。服务能够正常启动、首页可以访问,不能替代认证行为检查。
.NET 漏洞需要核对具体组件与场景
CVE-2026-102870 涉及 Microsoft.AspNetCore.Components.WebAssembly.Server 中的 Blazor WebAssembly 调试代理。其利用需要开发者参与调试并处理受攻击者影响的数据,不能泛化为所有 ASP.NET 生产站点都存在无交互 RCE。
10.x 对应包的修复版本为 10.0.13;使用 11 预发布分支的环境,对应修复版本为 11.0.0-rc.2.26478.115。按微软公告更新所用 .NET 与相关 NuGet 包,并重启调试器和开发环境。生产系统无需为了本次修复切换到预发布分支。微软官方公告
Go 与 eMudhra 证书信任更新
Go 1.27.3、1.26.10 包含 crypto/x509 安全修复。使用 Go 编译服务的团队,应更新构建工具链并重新编译、部署相关程序;仅更新服务器上的 go 命令,不会替换此前构建的业务二进制。Go 官方发布记录
eMudhra 事件涉及 8 个中间 CA 私钥被恢复或泄露。客户端风险取决于其证书校验、吊销机制及信任库更新情况。浏览器收到阻断信息,并不代表容器、命令行工具和服务端 HTTP 客户端同步得到保护。
应分别更新浏览器、操作系统和应用独立维护的信任库。相关更新包括 NSS 3.131.1、Python certifi 2026.10.19 及上述 Go 版本。遇到证书报错时,应核对证书链和信任库,不要通过关闭 TLS 校验恢复连接。研究者事件与修复汇总
Python Ruby Perl 与 Vyper 的补充排查
virtualenv 需要更新并重新创建环境
CVE-2026-113723 涉及激活脚本中的提示符处理,利用需要攻击者影响传入参数、用户激活环境以及特定 shell 执行条件。官方确认 21.14.8 受影响,最早受影响版本尚未确定。
应使用 virtualenv 21.14.9 或更新修复版重新创建环境,避免旧激活脚本继续保留问题。这不能概括成“所有 Python 网站存在远程代码执行漏洞”。virtualenv 官方公告
Ruby 需更新实际使用的 gem
resolv 的内存耗尽及主机名校验问题,应按兼容性更新至 0.7.2;Ruby 3.3 对应更新为 0.3.2。是否暴露取决于应用是否真正通过该 gem 解析域名。Ruby 官方公告
net-imap 的 STARTTLS 问题,修复版本分别为 0.3.10、0.4.24、0.5.14、0.6.4。按所用分支更新,检查连接是否确实建立 TLS。net-imap 官方公告
这两组 Ruby 公告分别早于本轮 10 月集中更新,此处列入补充排查。
Perl 按发行版公告更新软件包
Ubuntu USN-8940-1 对应 libxs-parse-keyword-perl 的拒绝服务问题。公告列出的修复包为 Ubuntu 26.04 的 0.49-1ubuntu0.1 和 Ubuntu 26.10 的 0.49-1ubuntu1。应匹配自身发行版,不能直接将该公告套用到所有 Ubuntu 版本。Ubuntu 官方公告
Vyper 不适合套用一个统一升级版本
Vyper 的异常换行字符问题在历史分支与 0.4.1 至 0.5.0b1 等版本中存在不同情况。0.1.0b17 是历史分支的修复信息,不能当成现代 0.4.x 项目的通用升级目标。补丁前应依公告拒绝异常分隔字符,并评估已有编译产物。Vyper 换行处理公告
另一个 create_from_blueprint 偏移验证问题,在当前官方公告中仍没有修复版本。允许外部控制相关参数的项目应落实边界检查,并按合约变更流程处理;只更新本地编译器不会改变已经部署的合约。Vyper 偏移验证公告
修复后需要验证的五件事
建议为每项资产保留以下验证记录:
版本与来源:记录实际产品、分支、软件包修订号或镜像摘要,对照供应商公告。
运行实例:确认新进程、容器和所有副本已替换,避免旧实例继续接收流量。
关键行为:测试登录、上传、数据库读写、TLS 连接和网关认证,而不只是检查首页。
暴露范围:复核备用域名、源站入口、IPv6、后台服务及开发构建环境,避免遗漏。
入侵排查:检查异常文件、进程、出站请求和凭证调用。存在受污染产物或入侵迹象时,继续执行隔离、可信重建和凭证轮换。
漏洞修复的完成标准,应落在实际提供服务的实例和恢复验证结果上。下载了新软件包、修改了配置文件,或扫描暂时没有告警,都不足以单独证明处理完成。
选题参考:阻击者联盟原文。各产品的修复目标及适用条件以文内项目官方公告和第一手分析为依据。



还没有评论,来说两句吧...