摘要:就在昨天,PHP 官方放出两个 CVSS 9.2 分的内核级高危漏洞,圈内代号 PHP2Shell:CVE-2026-109618、CVE-2026-109619。漏洞核心是无需认证远程代码执行(Unauthenticated...
就在昨天,PHP 官方放出两个 CVSS 9.2 分的内核级高危漏洞,圈内代号 PHP2Shell:CVE-2026-109618、CVE-2026-109619。
漏洞核心是无需认证远程代码执行(Unauthenticated RCE),POC 已经公开,全网自动化扫描脚本已经跑起来了。
很多人有误区:以为是 WordPress、YzmCMS、织梦这类程序漏洞,不是!漏洞在 PHP 解释器内核,和你的业务代码无关。只要你的服务器对外提供 PHP 服务,就存在被拿下的风险。
目前已有很多同学,用宝塔服务器已经完成升级、入侵排查,全过程记录下来,给宝塔运维、站长同行参考,建议尽快修复。
漏洞简单说明
漏洞编号:CVE-2026-109618、CVE-2026-109619
危害等级:CVSS v4.0 9.2 严重
攻击条件:不需要登录、不需要网站上传接口、不需要网站有代码漏洞,攻击者发送特制的 `multipart/form-data` 请求,携带 `PHP_SESSION_UPLOAD_PROGRESS` 即可触发
风险区别:
Apache mod_php:风险最高,极易利用
宝塔默认 PHP-FPM:可利用,难度略低,但 POC 验证可行
额外风险:CVE-2026-109619 附带内存泄露,攻击者可以直接读取进程内存里的数据库密码、Cookie、密钥等敏感信息
❗ 重点提醒:关闭 `session.upload_progress.enabled = 0` 只是临时缓解手段,不能完全修复漏洞,官方明确还有其他利用链,配置修改不能替代版本升级!
官方修复版本清单:
PHP 8.2 → 8.2.35
PHP 8.3 → 8.3.36
PHP 8.4 → 8.4.27
PHP 8.5 → 8.5.12
已经停止维护的老版本:PHP7.4 / 8.0 / 8.1,宝塔单独编译了修复包:7.4.34 / 8.0.27 / 8.1.35,PHP7.3 及更早版本:官方无补丁,强烈建议迁移,不要继续对外公网使用。
宝塔面板完整升级步骤
1. 服务器快照备份
宝塔面板 → 快照,创建快照,升级出兼容问题可以一键回滚。
2. 更新软件商店列表
打开【软件商店】,右上角点【更新软件列表】,很多人刷不出新版本就是没刷新源。

3. 升级 PHP 版本
软件商店 → 已安装,找到你正在使用的 PHP 版本

点击【设置】→【版本更新】,升级到上面对应的修复版本

如果没有更新按钮:直接安装新版修复版,宝塔支持多 PHP 共存,后续在网站设置切换版本
升级完成,必须重启 PHP-FPM
4. 临时加固配置(升级后也建议保留,双层防护)
进入 PHP【设置】→【配置文件 php.ini】
session.upload_progress.enabled = 0 post_max_size = 16M upload_max_filesize = 10M
保存,重启 PHP-FPM。
自己编译 / YUM/APT 自建 PHP 环境升级
类型 1:发行版包管理安装(apt /yum/dnf,Ubuntu、Debian、CentOS、AlmaLinux)
适合:`apt install php8.3-fpm`、`yum install php` 这种系统源安装
# Debian / Ubuntu apt update apt upgrade php* # 重启fpm,版本号看你自己的,php8.2-fpm / php8.3-fpm systemctl restart php8.3-fpm # CentOS / AlmaLinux / RockyLinux yum update php* # dnf update php* systemctl restart php-fpm
注意:很多老系统自带源版本老旧、没有官方补丁包,需要换第三方源(surý、remi)。
类型 2:源码手动编译 PHP(最多踩坑!LNMP、自己./configure 编译)
源码编译没有包管理器自动更新,是本次漏洞高危重灾区,下载对应分支修复版源码,重新编译覆盖:
1. 去[php.net](https://php.net)下载修复版本源码包,和你当前是同一个大版本分支(比如原来编译 8.3,就下 8.3.36)
2. 保留你上次一模一样的 `./configure` 参数(非常关键,不然扩展全部失效)
# 先备份当前php、php.ini、fpm配置 cp -r /usr/local/php /usr/local/php.bak # 解压新版源码,进入目录 ./configure 【这里粘贴你之前的全部编译参数!】 make -j$(nproc) make install
3. 覆盖完成后,不要忘记拷贝原 php.ini、php-fpm.conf、pool.d 池配置
4. 停止旧 php-fpm,重启服务
systemctl stop php-fpm systemctl start php-fpm php -v
