紧急 · CVSS 9.2

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