PHP SOAP 模块曝高危漏洞:可致远程代码执行,影响多个 PHP 8.x 主流版本
一、情况概述
近期,PHP 被披露存在多处安全漏洞,漏洞主要集中在 SOAP、PHP-FPM、MBString、PDO_Firebird、Standard、DOM 等模块。其中,SOAP 模块相关漏洞风险最高,攻击者在特定条件下可通过构造恶意 SOAP 请求触发内存破坏,可能造成远程代码执行、信息泄露或服务崩溃。
本次值得重点关注的漏洞包括:
| 漏洞编号 | 影响模块 | 漏洞类型 | 风险等级 |
|---|---|---|---|
| CVE-2026-6722 | SOAP | Use-after-free | Critical |
| CVE-2026-7261 | SOAP | Use-after-free | Critical |
| CVE-2026-7262 | SOAP | 空指针检查缺陷 | High / Medium |
| CVE-2026-6735 | PHP-FPM | 跨站脚本攻击 XSS | Medium / High |
| CVE-2026-7259 | MBString | 空指针解引用 | Medium |
| CVE-2026-6104 | MBString | 越界访问 | Medium |
| CVE-2025-14179 | PDO_Firebird | SQL 注入 | High |
| CVE-2026-7568 | Standard | 整数溢出 | Medium |
| CVE-2026-7258 | Standard | 字符处理缺陷 | Medium |
| CVE-2026-7263 | DOM | XML 规范化异常 | Medium |
| CVE-2026-42371 | URI / uriparser | 数值截断 | Medium |
在上述漏洞中,CVE-2026-6722 与 CVE-2026-7261 对外部攻击面影响较大。若业务系统启用了 PHP SOAP 扩展,并对公网或不可信网络提供 SOAP 服务,应尽快进行排查和修复。
二、风险详情
1. SOAP 模块 Use-after-free 漏洞
SOAP 是 PHP 中用于构建和处理 SOAP Web Service 的扩展模块。在部分企业系统、旧版接口系统、支付对接、内部服务调用等场景中仍较常见。
本次披露的 SOAP 相关漏洞主要包括:
| 漏洞编号 | 漏洞说明 |
|---|---|
| CVE-2026-6722 | SOAP 扩展对象去重机制在处理 apache:Map 重复键时,可能保留已释放对象的悬空指针 |
| CVE-2026-7261 | SoapServer 启用 SOAP_PERSISTENCE_SESSION 时,异常请求处理流程可能错误释放持久化对象并继续保留指针 |
| CVE-2026-7262 | SOAP Apache map 处理逻辑中 NULL 检查不完整,可能导致异常行为或进程崩溃 |
其中,CVE-2026-6722 风险最为突出。该漏洞源于 SOAP 扩展在对象去重过程中,将 PHP 对象指针存储在全局映射表中,但未正确增加对象引用计数。当攻击者构造包含重复键的 apache:Map 节点时,原始 PHP 对象可能被释放,但全局映射表中仍保留指向该对象的悬空指针。
在后续处理 href 引用时,SOAP 扩展可能再次访问该悬空指针,从而触发 Use-after-free。由于已释放内存区域可能被 PHP 字符串等新对象重新占用,攻击者在可控 SOAP 请求体的情况下,存在进一步利用该漏洞实现远程代码执行的可能。
2. SOAP_PERSISTENCE_SESSION 场景风险
CVE-2026-7261 与 SoapServer 的会话持久化模式有关。
当 PHP SOAP 服务使用 SOAP_PERSISTENCE_SESSION 时,服务端处理对象会通过 Session 在多次请求之间保持状态。在 SOAP 请求解析或处理过程中发生错误时,相关对象可能被错误释放,但内部仍保留指针引用,最终导致 Use-after-free。
该漏洞可能造成:
- 内存破坏
- 敏感信息泄露
- PHP-FPM 子进程崩溃
- 在特定条件下进一步扩大为代码执行风险
如果业务系统中存在如下代码特征,应重点关注:
$server = new SoapServer($wsdl);
$server->setPersistence(SOAP_PERSISTENCE_SESSION);
$server->handle();
3. PHP-FPM 状态页 XSS 漏洞
CVE-2026-6735 影响 PHP-FPM status endpoint。
PHP-FPM status 页面通常用于查看进程池状态、请求数量、慢请求情况等运行指标。如果该页面被暴露给公网或低权限用户访问,攻击者可能利用该漏洞注入恶意脚本,进一步攻击访问该页面的管理员或运维人员。
该漏洞本身不一定直接导致服务器被接管,但在管理后台、监控平台、内网运维系统中,可能被用于窃取凭证、劫持会话或配合其他漏洞扩大攻击影响。
4. MBString 模块内存安全问题
MBString 是 PHP 中常用的多字节字符串处理扩展,广泛用于中文、日文、韩文等多字节字符处理场景。
本次涉及 MBString 的漏洞包括:
| 漏洞编号 | 漏洞说明 |
|---|---|
| CVE-2026-7259 | php_mb_check_encoding() 可通过 mb_ereg_search_init() 触发空指针解引用 |
| CVE-2026-6104 | mbfl_name2encoding_ex() 存在越界访问问题 |
此类漏洞通常需要攻击者控制特定字符编码、正则表达式或输入内容。成功触发后,可能导致 PHP 进程崩溃,造成拒绝服务影响。
5. PDO_Firebird SQL 注入漏洞
CVE-2025-14179 影响 PDO_Firebird 模块。
该漏洞与 Firebird 驱动处理带 NUL 字节字符串时的引用和转义逻辑有关。攻击者可能利用特制输入影响 SQL 语句结构,从而造成 SQL 注入。
若业务系统使用 Firebird 数据库,并依赖 PDO_Firebird 进行 SQL 构造、字符串引用或参数处理,应尽快排查是否受影响。
6. Standard、DOM 与 URI 相关问题
除 SOAP、FPM、MBString、PDO_Firebird 外,本次还涉及 PHP 标准库、DOM 与 URI 解析相关漏洞。
| 漏洞编号 | 影响模块 | 漏洞说明 |
|---|---|---|
| CVE-2026-7568 | Standard | 字符数组偏移处理存在有符号整数溢出 |
| CVE-2026-7258 | Standard | ctype.h 相关函数字符处理方式不当,可能导致未定义行为 |
| CVE-2026-7263 | DOM | Dom\XMLDocument::C14N() 可能输出重复 XML 命名空间声明 |
| CVE-2026-42371 | URI / uriparser | URI 解析组件存在数值截断问题 |
其中,DOM C14N 问题对依赖 XML 签名、验签、SAML、SOAP 安全扩展、接口报文完整性校验的系统具有一定影响,可能造成规范化结果异常。
三、风险危害
1. 远程代码执行风险
SOAP 相关漏洞在攻击者可控制 SOAP 请求体的情况下,可能触发 Use-after-free。尤其是 CVE-2026-6722,由于涉及对象释放后的悬空指针复用,具备较高利用价值。
若 SOAP 服务直接暴露在公网,攻击者可能通过发送恶意 XML/SOAP 请求触发漏洞,进一步造成远程代码执行风险。
2. 服务拒绝与业务中断
MBString、SOAP、Standard 等模块中的内存安全问题可能导致 PHP-FPM worker 进程崩溃。在高并发攻击下,攻击者可能通过反复发送畸形请求造成 PHP-FPM 子进程频繁重启,影响业务可用性。
3. 信息泄露风险
Use-after-free 类漏洞可能导致进程内存被异常读取或复用。在特定条件下,攻击者可能获取敏感数据,例如业务响应内容、Session 信息、内部对象数据等。
4. SQL 注入风险
使用 PDO_Firebird 的业务系统可能受 CVE-2025-14179 影响。若攻击者能够控制进入数据库查询的参数,并触发 NUL 字节相关处理缺陷,可能导致 SQL 注入,进一步造成数据泄露、数据篡改或权限绕过。
5. 管理面攻击风险
PHP-FPM status 页面通常属于运维管理面接口。若该接口对外暴露,CVE-2026-6735 可能被用于 XSS 攻击,进而影响运维人员浏览器环境、内部监控平台或管理系统账号安全。
四、受影响范围
受影响的 PHP 版本主要包括:
| PHP 分支 | 受影响版本 | 修复版本 |
|---|---|---|
| PHP 8.2 | 8.2.x 低于 8.2.31 | 8.2.31 |
| PHP 8.3 | 8.3.x 低于 8.3.31 | 8.3.31 |
| PHP 8.4 | 8.4.x 低于 8.4.21 | 8.4.21 |
| PHP 8.5 | 8.5.x 低于 8.5.6 | 8.5.6 |
重点受影响场景包括:
- 启用 PHP SOAP 扩展并对外提供 SOAP 接口
- 使用
SoapServer处理外部请求 - 使用
SOAP_PERSISTENCE_SESSION持久化 SOAP handler 对象 - PHP-FPM status 页面被公网或低权限用户访问
- 使用 MBString 处理用户可控字符编码或正则输入
- 使用 PDO_Firebird 连接 Firebird 数据库
- 使用 XML C14N 进行签名、验签或报文完整性校验
- 使用 PHP 8.5 URI 相关解析能力
五、排查方法
1. 检查 PHP 版本
php -v
若使用 PHP-FPM,可执行:
php-fpm -v
也可通过系统包管理器查看:
# Debian / Ubuntu
dpkg -l | grep php
# RHEL / CentOS / Rocky / Alma
rpm -qa | grep php
如果版本低于以下修复版本,则可能受影响:
| PHP 分支 | 安全版本 |
|---|---|
| PHP 8.2 | 8.2.31 及以上 |
| PHP 8.3 | 8.3.31 及以上 |
| PHP 8.4 | 8.4.21 及以上 |
| PHP 8.5 | 8.5.6 及以上 |
2. 检查是否启用 SOAP 扩展
php -m | grep -i soap
如果返回 soap,说明当前环境已启用 SOAP 扩展。
3. 检查业务代码是否使用 SoapServer
grep -rn "SoapServer\|SOAP_PERSISTENCE_SESSION" /path/to/app
如发现 SOAP_PERSISTENCE_SESSION,应优先处置。
4. 检查 PHP-FPM status 是否启用
grep -rn "pm.status_path" /etc/php* /usr/local/etc/php* 2>/dev/null
如配置了 pm.status_path,需进一步检查 NGINX、Apache 或网关层是否对外暴露该路径。
5. 检查是否启用 MBString
php -m | grep -i mbstring
6. 检查是否启用 PDO_Firebird
php -m | grep -i firebird
若返回 Firebird 相关模块,应重点排查数据库访问代码。
六、处置与修复建议
1. 立即升级 PHP 版本
建议受影响用户尽快升级至以下版本或更高版本:
| PHP 分支 | 建议版本 |
|---|---|
| PHP 8.2 | 8.2.31 或更高版本 |
| PHP 8.3 | 8.3.31 或更高版本 |
| PHP 8.4 | 8.4.21 或更高版本 |
| PHP 8.5 | 8.5.6 或更高版本 |
升级后需重启 PHP-FPM、Web Server、队列 Worker、定时任务守护进程等长期运行进程,确保新版本生效。
# Debian / Ubuntu
apt update
apt upgrade php php-fpm
# RHEL / CentOS / Rocky / Alma
dnf update php php-fpm
重启服务示例:
systemctl restart php-fpm
systemctl restart nginx
systemctl restart httpd
不同系统中的 PHP-FPM 服务名可能为 php8.3-fpm、php8.4-fpm、php-fpm,请以实际环境为准。
2. 临时禁用 SOAP 扩展
若业务不依赖 SOAP,可临时禁用 SOAP 扩展以降低风险。
查看 PHP 配置文件位置:
php --ini
在对应配置文件中注释或移除 SOAP 扩展加载项:
;extension=soap
修改后重启 PHP-FPM 或 Web Server。
3. 限制 SOAP 接口访问来源
若业务必须使用 SOAP,应通过网络层、网关层或应用层限制调用来源。
建议措施包括:
- 仅允许可信内网或固定 IP 访问 SOAP 接口
- 对 SOAP 接口增加身份认证
- 在 WAF 或网关层拦截畸形 XML/SOAP 请求
- 对异常 500 错误、PHP-FPM worker 崩溃进行告警
4. 收敛 PHP-FPM status 页面
PHP-FPM status 页面不应暴露公网,建议仅允许本机或可信管理网段访问。
NGINX 配置示例:
location /status {
allow 127.0.0.1;
allow 10.0.0.0/8;
deny all;
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
5. 加强数据库查询安全
使用 PDO_Firebird 的系统应避免拼接 SQL,推荐使用参数化查询。
安全示例:
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
$stmt->execute([$id]);
高风险写法示例:
$sql = "SELECT * FROM users WHERE id = " . $_GET['id'];
6. 关注异常日志
建议重点关注以下日志特征:
| 日志特征 | 可能风险 |
|---|---|
| PHP-FPM worker 频繁崩溃 | 可能存在内存安全漏洞触发行为 |
| SOAP 接口出现大量畸形 XML 请求 | 可能存在漏洞探测或利用尝试 |
| PHP-FPM status 页面被异常访问 | 可能存在管理面探测或 XSS 尝试 |
| Firebird 数据库出现异常 SQL 报错 | 可能存在 SQL 注入尝试 |
可通过以下命令查看相关日志:
journalctl -u php-fpm
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
tail -f /var/log/httpd/error_log
七、修复优先级建议
建议按照以下优先级开展处置:
| 优先级 | 处置对象 | 原因 |
|---|---|---|
| P0 | 公网 SOAP 服务 | 可能存在远程代码执行或严重内存破坏风险 |
| P0 | 使用 SOAP_PERSISTENCE_SESSION 的 SOAP 服务 | 受 CVE-2026-7261 影响较大 |
| P1 | 暴露 PHP-FPM status 的服务器 | 存在管理面 XSS 风险 |
| P1 | 使用 PDO_Firebird 的业务系统 | 存在 SQL 注入风险 |
| P2 | 启用 MBString 且处理复杂用户输入的系统 | 存在拒绝服务风险 |
| P2 | 依赖 XML C14N 或 URI 解析的业务 | 可能影响签名校验或解析一致性 |
八、总结
本次 PHP 多个漏洞中,SOAP 模块相关问题风险最高。对于启用了 SOAP 扩展并对外提供服务的系统,攻击者可能通过构造恶意 SOAP 请求触发 Use-after-free,造成远程代码执行、信息泄露或服务崩溃。
建议相关用户尽快升级至 PHP 官方修复版本:
- PHP 8.2.31 或更高版本
- PHP 8.3.31 或更高版本
- PHP 8.4.21 或更高版本
- PHP 8.5.6 或更高版本
若短期内无法升级,应优先限制 SOAP 接口访问来源,禁用不必要的 SOAP 扩展,收敛 PHP-FPM status 页面,并持续监控 PHP-FPM 崩溃、畸形 SOAP 请求和数据库异常报错等风险信号。
九、外部参考
- PHP 官方 ChangeLog:https://www.php.net/ChangeLog-8.php
- PHP GitHub Security Advisories:https://github.com/php/php-src/security/advisories
- CVE-2026-6722 NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-6722
- CVE-2026-7261 NVD:https://nvd.nist.gov/vuln/detail/CVE-2026-7261