php 8.4 的三个高危漏洞(cve-2026-6722、cve-2026-6735、cve-2025-14179)是否修复,须通过版本号≥8.4.21、soap/fpm/firebird轻量触发验证及hardened编译、pm.status_path启用、pdo预处理关闭三项配置共同确认,而非依赖扫描工具。

直接验证修复效果比依赖“工具扫描”更可靠。PHP 8.4 的漏洞(如 CVE-2026-6722、CVE-2026-6735、CVE-2025-14179)是否真正修复,关键看版本号、运行时行为和配置状态,而非通用扫描工具的误报或漏报。
确认 PHP 8.4 是否已打上对应安全补丁
先执行命令获取真实版本与构建信息:
php -v php --ini php -m | grep -E "(soap|firebird|fpm)"
- 若输出为
PHP 8.4.21或更高(如8.4.22),说明已覆盖 CVE-2026-6722(SOAP RCE)和 CVE-2026-6735(FPM XSS); - 若为
8.4.21但未启用 Firebird 驱动(pdo_firebird不在php -m列表中),则 CVE-2025-14179 实际不生效,无需专项复查; - 版本低于
8.4.21(如8.4.20),即使宝塔显示“已升级”,也大概率只是子版本覆盖失败,需重走极速安装流程。
手动验证三个高危漏洞是否失效
不用黑盒扫描器,用最小可验证动作判断:
-
SOAP Use-After-Free(CVE-2026-6722)
创建一个极简测试脚本(如soap-test.php):<?php $server = new SoapServer(null, ['uri' => 'test']); $server->addFunction(SOAP_FUNCTIONS_ALL); // 不启动服务,仅加载 —— 若崩溃或 segfault,则补丁未生效 echo "SOAP 扩展加载正常\n";
在终端运行
php soap-test.php。若无 fatal error / segfault / abort,且输出正常,说明 UAF 已被内存保护机制拦截。 PHP-FPM status XSS(CVE-2026-6735)
确保/status页面已暴露(Nginx/Apache 配置含location /status { ... fastcgi_pass ... }),然后访问:http://yoursite/status?full&limit=10&search=<script>alert(1)</script>
若响应体中<script></script>被原样返回并可执行 → 补丁未生效;
若被过滤、转义(如变成<script>)或返回 400/403 → 补丁已起作用。-
Firebird SQL 注入(CVE-2025-14179)
仅当应用实际使用pdo_firebird时才需验证。写一段带 NUL 字节的查询:$pdo = new PDO("firebird:dbname=/db/test.fdb", $user, $pass); $stmt = $pdo->prepare("SELECT * FROM users WHERE name = ?"); $stmt->execute(["admin\0' OR 1=1--"]);若抛出
PDOException且错误信息不含数据库原始报错(如不泄露表结构),且无非预期数据返回 → 注入被参数化+驱动层过滤双重阻断。
检查配置项是否匹配修复要求
有些补丁需配合配置才生效,光升版本不够:
-
SOAP 漏洞修复依赖
--enable-soap编译时启用了 hardened allocators,可通过以下命令确认:php -i | grep "Configure Command" | grep -o "hardened"
若无
hardened字样,说明是普通编译版,虽版本达标,但缓解能力弱于官方预编译包。PHP 8.5.12下载修复 Core bailout 状态损坏安全问题,以及 BZ2、DOM、PDO、Opcache/JIT 内存与执行错误,改进 Unicode 字素处理、URL 解析、TLS 流状态、信号分发及会话错误处理。
-
FPM XSS 补丁强制要求
pm.status_path启用且路径未被重写。检查:grep "pm.status_path" /www/server/php/84/etc/php-fpm.d/www.conf
必须存在且非注释行,例如
pm.status_path = /status。 Firebird 驱动修复依赖
PDO::ATTR_EMULATE_PREPARES = false(同 PDO MySQL 安全要求)。在代码中检查是否显式关闭模拟预处理。
不推荐依赖的“漏洞修复工具”
- Nikto、Nmap、OpenVAS 等通用扫描器无法识别 PHP 内部 Use-After-Free 修复状态;
- Bandit、PHPStan、Psalm 属静态分析,对运行时内存漏洞无感知;
- 自研或第三方“PHP 漏洞检测脚本”多数只比对
php -v字符串,无法区分8.4.20(未修复)和8.4.20-security-patched(厂商私有修复)。
真正有效的复查,就是三步:
✅ 查版本号是否 ≥ 修复基线(8.4.21)
✅ 做轻量触发验证(不发请求、不连数据库、不启服务)
✅ 对照配置项是否就位(尤其 FPM status 路径、SOAP 编译选项、PDO 驱动设置)
不需要跑整套扫描流水线,也不需要等报告生成。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










