PHP再曝高危安全漏洞:TLS连接缺陷可致FPM全面崩溃,OpenSSL内存损坏隐患同步浮现

最近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生态的补丁响应速度向来不慢,但漏洞修复永远只是事后补救。真正重要的是建立常态化的版本跟踪机制,别让安全更新在待办列表里躺太久。毕竟在这个漏洞满天飞的年代"能用就行"的心态迟早要付出代价。

相关推荐
小新讲网安2 小时前
WiFi安全攻防实战:WPA3新协议与传统破解技术全解析
开发语言·网络·安全·php·漏洞·nmap·漏洞检测
必须会一定会8 小时前
Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移
开发语言·人工智能·ai编程
St_rive8 小时前
Page Object设计模式
java·开发语言·设计模式
wp123_18 小时前
硬件元器件笔记|IPX8 防水 Type‑C 母座安费诺 124018802112A 与 TONEVEE TY48086‑24A 分析
c语言·开发语言·笔记
wuyk5558 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
luj_17689 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
caimouse11 小时前
ReactOS 图形系统分析(16):字符串对象 — STROBJ(string.c)
c语言·开发语言
Aphelios38011 小时前
一次锁内网络IO引发的Tomcat线程池“饿死”事故
java·开发语言·spring boot·elasticsearch·tomcat·网络io阻塞·线程池耗尽
不可求~11 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++