最近PHP官方连发两道安全通告直接把不少运维同学吓出一身冷汗。编号CVE-2026-12184和CVE-2026-14355的两个漏洞一个藏在HTTP流包装器的TLS握手环节另一个潜伏在OpenSSL扩展的AES加密实现里影响面都不小。如果你的服务器还在跑PHP 8.2、8.3或8.4的老版本这篇文章建议你认真看完。先说CVE-2026-12184这个漏洞的危险程度被标为高影响问题出在PHP尝试建立HTTPS安全连接时的异常处理逻辑上。正常情况下PHP通过HTTP流包装器发起TLS连接如果证书过期、域名不匹配或者TLS初始化本身出了岔子流对象会被关闭并重置。到这里本来没什么问题坏就坏在后面的清理流程——代码假设流对象还可用直接对空指针执行操作结果可想而知。攻击者甚至不需要写专门的利用脚本只要构造一个能让TLS验证失败的远程请求比如丢一个过期证书过去就能触发这个空指针解引用。一旦命中PHP-FPM的工作进程会集体崩溃整个Web服务直接瘫痪。CVSS v4评分里可用性影响拉得很高毕竟谁都不想自己的网站被一张过期证书打挂。受影响的版本包括PHP 8.3.32之前、8.4.21之前以及8.5.6之前的所有版本。官方已经在7月初推送了修复补丁核心思路就是修正清理逻辑确保流对象关闭后不再被误用。如果你用的是Debian或Ubuntu系统可以通过包管理器直接升级Debian DSA-6377和Ubuntu安全公告都已经跟进。另一个漏洞CVE-2026-14355则属于内存层面的问题跟AES-WRAP-PAD算法有关。这个算法平时用得不多但在某些加密场景下确实会出现。漏洞根因是缓冲区大小算错了——代码按明文长度分配输出缓冲区却忘了RFC 5649规定的填充数据和附加元数据也需要占地方。缓冲区给小了OpenSSL加密时数据越界写入Zend内存管理器的堆结构就被破坏了。这种内存损坏未必当场让程序崩溃更像一颗定时炸弹。随着时间推移损坏的内存结构被访问到应用可能莫名其妙地闪退或者行为异常最终形成事实上的拒绝服务。虽然利用这个漏洞需要特定算法配合门槛不算低但它不需要任何身份验证攻击面依然很宽。这个内存损坏问题波及PHP 8.2.32以下、8.3.32以下、8.4.23以下以及8.5.8以下的版本。PHP官方在ChangeLog里明确记录了修复提交通过调整缓冲区大小来堵住越界写入的口子。回过头看这两个漏洞其实指向同一个老问题PHP这种被广泛部署的脚本语言在核心组件的错误处理和内存管理上依然存在死角。TLS连接失败后的空指针操作、加密缓冲区的大小计算失误都不是什么新鲜套路但偏偏能在生产环境里潜伏这么久。对于实际运维来说建议分几步走。第一立刻检查当前PHP版本对照上面的影响范围确认自己是否中招。第二优先安排升级尤其是对外暴露Web服务的节点PHP-FPM一旦崩溃就是全线不可用业务损失远大于升级成本。第三顺便审视一下代码里TLS连接和加密调用的使用方式尽量减少不必要的远程HTTPS请求对证书校验策略也做一次梳理。PHP生态的补丁响应速度向来不慢但漏洞修复永远只是事后补救。真正重要的是建立常态化的版本跟踪机制别让安全更新在待办列表里躺太久。毕竟在这个漏洞满天飞的年代能用就行的心态迟早要付出代价。
PHP再曝高危安全漏洞:TLS连接缺陷可致FPM全面崩溃,OpenSSL内存损坏隐患同步浮现
发布时间:2026/7/9 8:49:49
最近PHP官方连发两道安全通告直接把不少运维同学吓出一身冷汗。编号CVE-2026-12184和CVE-2026-14355的两个漏洞一个藏在HTTP流包装器的TLS握手环节另一个潜伏在OpenSSL扩展的AES加密实现里影响面都不小。如果你的服务器还在跑PHP 8.2、8.3或8.4的老版本这篇文章建议你认真看完。先说CVE-2026-12184这个漏洞的危险程度被标为高影响问题出在PHP尝试建立HTTPS安全连接时的异常处理逻辑上。正常情况下PHP通过HTTP流包装器发起TLS连接如果证书过期、域名不匹配或者TLS初始化本身出了岔子流对象会被关闭并重置。到这里本来没什么问题坏就坏在后面的清理流程——代码假设流对象还可用直接对空指针执行操作结果可想而知。攻击者甚至不需要写专门的利用脚本只要构造一个能让TLS验证失败的远程请求比如丢一个过期证书过去就能触发这个空指针解引用。一旦命中PHP-FPM的工作进程会集体崩溃整个Web服务直接瘫痪。CVSS v4评分里可用性影响拉得很高毕竟谁都不想自己的网站被一张过期证书打挂。受影响的版本包括PHP 8.3.32之前、8.4.21之前以及8.5.6之前的所有版本。官方已经在7月初推送了修复补丁核心思路就是修正清理逻辑确保流对象关闭后不再被误用。如果你用的是Debian或Ubuntu系统可以通过包管理器直接升级Debian DSA-6377和Ubuntu安全公告都已经跟进。另一个漏洞CVE-2026-14355则属于内存层面的问题跟AES-WRAP-PAD算法有关。这个算法平时用得不多但在某些加密场景下确实会出现。漏洞根因是缓冲区大小算错了——代码按明文长度分配输出缓冲区却忘了RFC 5649规定的填充数据和附加元数据也需要占地方。缓冲区给小了OpenSSL加密时数据越界写入Zend内存管理器的堆结构就被破坏了。这种内存损坏未必当场让程序崩溃更像一颗定时炸弹。随着时间推移损坏的内存结构被访问到应用可能莫名其妙地闪退或者行为异常最终形成事实上的拒绝服务。虽然利用这个漏洞需要特定算法配合门槛不算低但它不需要任何身份验证攻击面依然很宽。这个内存损坏问题波及PHP 8.2.32以下、8.3.32以下、8.4.23以下以及8.5.8以下的版本。PHP官方在ChangeLog里明确记录了修复提交通过调整缓冲区大小来堵住越界写入的口子。回过头看这两个漏洞其实指向同一个老问题PHP这种被广泛部署的脚本语言在核心组件的错误处理和内存管理上依然存在死角。TLS连接失败后的空指针操作、加密缓冲区的大小计算失误都不是什么新鲜套路但偏偏能在生产环境里潜伏这么久。对于实际运维来说建议分几步走。第一立刻检查当前PHP版本对照上面的影响范围确认自己是否中招。第二优先安排升级尤其是对外暴露Web服务的节点PHP-FPM一旦崩溃就是全线不可用业务损失远大于升级成本。第三顺便审视一下代码里TLS连接和加密调用的使用方式尽量减少不必要的远程HTTPS请求对证书校验策略也做一次梳理。PHP生态的补丁响应速度向来不慢但漏洞修复永远只是事后补救。真正重要的是建立常态化的版本跟踪机制别让安全更新在待办列表里躺太久。毕竟在这个漏洞满天飞的年代能用就行的心态迟早要付出代价。