PHP2Shell 来了:两个远程代码执行漏洞,8.5 / 8.4 / 8.3 / 8.2 请立刻升级
CVE-2026-109618 · CVE-2026-109619 | 无需登录即可被攻击 | 影响面可追溯到 PHP 5.4
这两天做网站、运维、跑 WordPress、用宝塔面板的朋友,朋友圈和群里基本都在转同一件事:PHP 官方在 10 月 21 日发了紧急安全更新,一口气修了两个严重的远程代码执行(RCE)漏洞。
这篇文章不啰嗦,只讲四件事:漏洞是什么、哪些版本中招、该升到哪个版本、怎么一步步升级。看完你应该能直接动手。
一句话结论:PHP 官方明确表示,目前没有能完全堵住漏洞的配置手段,唯一安全的办法就是升级到修复版本,并重启 PHP 服务。
一、漏洞到底是什么
这次一共两个 CVE,官方评分都是 CVSS v4.0 9.2(严重),漏洞在 PHP 解释器本身,不是某个插件或某套程序的问题。也就是说,你的网站程序再规范,只要底层 PHP 没升级,照样有风险。
| 编号 | 类型 | 通俗理解 |
|---|---|---|
| CVE-2026-109618 | 内存耗尽(OOM)导致内存破坏,进而 RCE | PHP 在内存分配失败时,会跳出当前流程,把一些还没初始化完的数据留在无效状态;随后清理过程又把这些数据当正常数据处理,就可能被攻击者利用来执行代码。 |
| CVE-2026-109619 | 过期全局状态导致 RCE,另可泄露内存 | 除了执行代码,研究人员称它还可能在不触发 RCE 的情况下,泄露同一进程里其他请求的密码、令牌、API Key、证书等敏感数据。 |
发现者是 Wiz Research、OpenAI Codex Security 和 Calif 的研究人员,他们已经上线了专门的披露网站 php2shell.com。
有人在攻击吗?
各方说法不完全一致,这里原样列出,你自己判断:
- watchTowr:称已通过蜜罐网络观测到野外利用。
- Cloudflare:称观测到针对其客户的攻击流量。
- PHP 安全团队:称在发布时未发现功能性的可用利用。
- CISA:强烈敦促立即修补。
不管哪种说法,漏洞细节已经公开、无需登录就能打、评分 9.2,这类漏洞一般几天内就会出现批量扫描,千万别抱侥幸心理。
二、哪些版本受影响
官方的口径是:所有早于修复版本的 PHP 都受影响,而且没有"下限"。研究人员称,受影响版本可以追溯到 PHP 5.4。PHP 官方提示,只要是处理网页请求的 PHP 都有风险,包括 PHP-FPM、Apache mod_php、php-cgi、FrankenPHP、LiteSpeed。
| PHP 分支 | 有漏洞的版本 | 官方修复版本 |
|---|---|---|
| PHP 8.5 | 8.5.11 及以下 | 8.5.12 |
| PHP 8.4 | 8.4.26 及以下 | 8.4.27 |
| PHP 8.3 | 8.3.35 及以下 | 8.3.36 |
| PHP 8.2 | 8.2.34 及以下 | 8.2.35 |
| PHP 8.1 / 8.0 / 7.4 及更老 | 官方已停止维护,受影响 | 官方无修复,见下文宝塔版 |
提醒:官方已不再维护 PHP 8.1 及更老的分支。如果你还在用 7.4、8.0、8.1,官方不会给你发补丁,这是个长期隐患,不是只有这一次。
三、宝塔用户专属:旧版本也有修复包
国内大量站长用宝塔面板,而且很多老站还跑着 PHP 7.4 / 8.0 / 8.1,没法一下子迁到新版本。宝塔这次已经同步了 PHP 8.2 至 8.5,并且为官方不再维护的旧版本打包了修复版:
| PHP 分支 | 宝塔修复版本 | 说明 |
|---|---|---|
| PHP 8.5 | 8.5.12 | 官方修复版,Linux / Windows 面板同步 |
| PHP 8.4 | 8.4.27 | 官方修复版,Linux / Windows 面板同步 |
| PHP 8.3 | 8.3.36 | 官方修复版,Linux / Windows 面板同步 |
| PHP 8.1 | 8.1.35 | 宝塔打包的 Linux 修复版 |
| PHP 8.0 | 8.0.31 | 宝塔打包的 Linux 修复版 |
| PHP 7.4 | 7.4.34 | 宝塔打包的 Linux 修复版 |
宝塔官方说明里提到:安装 PHP 安全补丁可以直接在软件商店操作,不用先升级面板。另外面板里的"一键临时修复"只能降低部分攻击路径的风险,不等于完整修复,而且是企业版功能,核对 PHP 实际版本号才是关键。
四、手把手:怎么升级
第 1 步:先确认你现在跑的是什么版本
注意,要查的是真正处理网站请求的那个 PHP,不是你电脑上命令行里的那个。
# 系统默认 PHP
php -v
# 宝塔面板,以 8.3 为例(目录里的 83 对应版本号)
/www/server/php/83/bin/php -v
# 想看网站实际用的版本,可临时放一个 phpinfo 页面,看完立刻删除
第 2 步:备份
网站文件和数据库先备份,有条件的话打个服务器快照。升级后如果某个老程序不兼容,你能回退。
第 3 步:按你的环境升级
① 宝塔面板用户
软件商店 → 找到对应的 PHP 版本 → 设置 → 安装版本 / 升级到上表中的修复版本 → 升级完成后重启 PHP。同时装了多个 PHP 版本的,每一个在用的版本都要升。
② Docker / 容器用户
官方 php 镜像已经有对应的修复标签,常用的滚动标签(如 php:8.4-apache)也会指向新版本。注意要重新拉取并重建部署,光重启旧容器没用。
docker pull php:8.4-apache
docker compose build --no-cache
docker compose up -d --force-recreate
③ 云厂商 / 发行版包管理用户
用 apt、yum、dnf 装 PHP