PHP 8.4.27 是修复 CVE-2026-109618 和 CVE-2026-109619(PHP2Shell)漏洞的官方起始版本,8.4.8 等早期 8.4.x 版本均未包含修复,仍存在严重远程代码执行风险。

PHP 8.4.8 并非修复版本,它**不包含对 CVE-2026-109618 / CVE-2026-109619(PHP2Shell)漏洞的修复**。这两个高危 RCE 漏洞的官方修复起始版本是 PHP 8.4.27。因此,运行 8.4.8 的系统仍处于严重风险中,所谓“二次绕过”实际是建立在原始漏洞未被修补基础上的持续利用——攻击者根本不需要“绕过”,因为漏洞本身依然存在且可直接触发。
确认你是否仍在使用不安全版本
执行以下命令检查真实 PHP 版本:
- php -v —— 查看 CLI 环境版本
- phpinfo() 或 —— 查看 Web 环境(如 Apache/Nginx + PHP-FPM)所用版本
- 注意区分:某些控制面板(如 cPanel、Plesk)或 Docker 镜像可能显示“PHP 8.4”,但底层仍是旧维护版(如 8.4.8),需以
php -v输出为准
文件包含类漏洞在 PHP2Shell 中的真实形态
本次漏洞并非传统意义上的 include($_GET['file']) 问题,而是内核级内存管理缺陷,影响所有依赖 PHP 解析请求体的场景。攻击者常通过以下方式触发:
- 构造恶意 multipart/form-data 请求,利用会话上传进度解析逻辑越界读写
- 向
php://input注入特制二进制 payload,干扰 JIT 编译器上下文切换 - 滥用 FFI 扩展调用时的类型校验绕过,间接控制内存布局
这些行为不会留下典型日志痕迹(如 Warning: include(): failed to open stream),而是直接导致 PHP-FPM 进程崩溃或远程代码执行。
修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
临时缓解措施(仅限无法立即升级的场景)
补丁发布后,官方明确表示无有效临时缓解方案。但若因兼容性问题必须延迟升级,可采取以下纵深防御动作:
- 在 Web 服务器层(Nginx/Apache)禁用
php://input和php://filter协议:添加php_flag allow_url_include off及对应 Nginxfastcgi_param PHP_VALUE "allow_url_include=Off" - 限制上传接口的 Content-Type 和请求体大小:Nginx 中设置
client_max_body_size 2m;,并用map模块拒绝非application/x-www-form-urlencoded或multipart/form-data的 POST 请求 - 部署 WAF 规则:绿盟、Cloudflare、ModSecurity 等已更新针对 PHP2Shell 的检测规则(如匹配特定 boundary 字符串、异常的 multipart header 长度、连续 NULL 字节等)
- 将 PHP-FPM 运行用户降权至无 shell 权限的专用账户,并禁用
exec、system、shell_exec等危险函数(通过disable_functions)
必须执行的最终动作:升级到修复版本
唯一可靠方案是升级至 PHP 8.4.27 或更高版本。注意升级路径:
- 检查你的环境来源:Ubuntu/Debian 用户等待 USN-8948-1 补丁包;CentOS/RHEL 用户关注 EPEL 或厂商镜像;Docker 用户拉取官方
php:8.4.27-apache或php:8.4.27-fpm镜像 - 避免“源码编译覆盖”:多数生产环境使用发行版打包 PHP,应通过
apt upgrade php8.4或yum update php安装厂商适配后的修复包 - 升级后验证:运行
php -r "echo PHP_VERSION;"并确认输出为8.4.27;同时检查phpinfo()中 OPcache、FFI、JIT 等扩展状态是否正常
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










