PHP 8.3.10 存在未修复的 PHP2Shell(CVE-2026-109618/109619)高危RCE漏洞,需立即关闭 session.upload_progress、禁用危险函数、拦截恶意上传请求并升级至 8.3.36。

PHP 8.3.10 存在文件包含漏洞,但更关键的是——它本身不受 PHP2Shell(CVE-2026-109618/109619)影响,因为这两个高危 RCE 漏洞的修复版本是 8.3.36,而 8.3.10 属于未修复的高危旧版本。不过需明确:你提到的“文件包含漏洞”若指传统 LFI/RFI(如 include($_GET['page'])),和本次内核级 PHP2Shell 是两类问题;但现实中,PHP 8.3.10 环境极大概率同时面临双重风险:既有业务层文件包含缺陷,又存在底层解释器级远程代码执行隐患。
下面按真实应急优先级给出可立即落地的操作:
关闭 session.upload_progress(阻断 PHP2Shell 主要利用链)
这个配置项是 CVE-2026-109619 的关键入口,PHP 8.3.10 默认开启:
; 修改 php.ini session.upload_progress.enabled = Off
改完后必须重启 PHP-FPM 或 Apache(不能只 reload):
立即学习“PHP免费学习笔记(深入)”;
sudo systemctl restart php8.3-fpm # Debian/Ubuntu # 或 sudo systemctl restart httpd # CentOS/RHEL Apache
禁用危险文件包含函数(缓解传统 LFI/RFI)
在 php.ini 中禁用动态包含能力,对已有业务影响较小但防御效果直接:
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
disable_functions = include,include_once,require,require_once,readfile,file_get_contents
⚠️ 注意:如果业务确需 file_get_contents(如调用内部 API),可保留,但务必确保所有 include/require 路径为绝对硬编码、无用户输入拼接。
临时拦截恶意 multipart 请求(WAF 层快速止血)
攻击者利用 PHP2Shell 主要靠构造畸形文件上传请求。可在 Nginx 或云 WAF 上加一条规则,拦截异常大的 Content-Disposition 或含 upload_progress 字样的请求头:
# Nginx 示例:拒绝含 upload_progress 的 POST 请求
if ($request_method = POST) {
if ($http_content_type ~* "multipart/form-data") {
if ($args ~* "PHPSESSID|upload_progress") {
return 403;
}
}
}或使用 ModSecurity 规则匹配 Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"。
立即升级 PHP 版本(根本解决)
PHP 8.3.10 必须升至 8.3.36:
- 官方已停止对 8.3.10 的任何支持;
- 所有低于 8.3.36 的 8.3.x 版本均存在 CVE-2026-109618/109619;
- 升级命令示例(Ubuntu + ondrej PPA):
sudo apt update && sudo apt install php8.3=8.3.36-1+ubuntu22.04.1+deb.sury.org+1
不复杂但容易忽略。


















