PHP开发团队于2026年7月30日同步发布了四个维护版本——PHP 8.2.33、8.3.33、8.4.24及8.5.9。此次更新修复了三项安全漏洞,分别影响ext-pgsql(PostgreSQL扩展)、ext-bcmath(BCMath扩展)和ext-phar(Phar扩展),其中两项被评定为高危漏洞。使用受影响扩展处理不可信输入或上传归档文件的应用面临直接风险,建议所有PHP用户立即升级。
一、CVE-2026-17543:PostgreSQL扩展SQL注入漏洞(高危,CVSS 4.0:8.1)
该漏洞存在于php_pgsql_convert()内部函数中——该函数为pg_select()、pg_insert()、pg_update()和pg_delete()等便捷函数提供底层支持。漏洞根源在于:函数使用PQescapeStringConn()转义用户输入后,将结果包裹在PostgreSQL的转义字符串常量(E'...')中。当PostgreSQL开启standard_conforming_strings设置时(自PostgreSQL 9.1起该设置即为默认值),PQescapeStringConn()不会对反斜杠进行转义。
攻击者可构造类似zzz' OR 1=1 --的输入,利用反斜杠逃逸闭合引号分隔符,完全脱离字符串上下文,实现SQL注入。该漏洞可远程利用,无需认证,官方公告将其描述为“trivial”(极易利用)。修复方案将参数包裹方式从E'...'转义字符串常量改为标准非转义字符串常量。
受影响版本:PHP 8.2.x(< 8.2.33)、8.3.x(< 8.3.33)、8.4.x(< 8.4.24)、8.5.x(< 8.5.9)。
二、CVE-2026-17544:BCMath扩展越界写入漏洞(高危,CVSS 4.0:8.1)
该漏洞影响BCMath扩展的bccomp()函数。问题位于bc_str2num()函数(ext/bcmath/libbcmath/src/str2num.c)中:当小数值先按调用方指定的scale截断、再去除尾部零时,内部变量str_scale被递减,但fractional_end指针未同步更新。随后bc_copy_and_toggle_bcd()复制数据时,复制的字节数超过了bc_new_num_nonzeroed()分配的缓冲区大小,导致越界写入。
较小数字分配于BCMath的256字节栈区时触发栈越界写入,较大分配则落入堆区,引发堆内存损坏。内存损坏漏洞在特定条件下可能导致服务崩溃,甚至为远程代码执行(RCE)创造路径。
受影响版本:PHP 8.4.x(< 8.4.24)、8.5.x(< 8.5.9)。PHP 8.2及8.3分支不受此漏洞影响。
三、CVE-2026-7260:Phar扩展无限递归崩溃漏洞(中危,CVSS 6.5)
该漏洞位于phar_get_link_source()函数中,该函数递归跟踪Phar归档中存储的符号链接。恶意构造的tar格式Phar归档若包含循环符号链接,将触发无限递归,耗尽C栈空间并导致PHP进程以段错误(segmentation fault)崩溃。
该漏洞需要用户或应用处理恶意归档才能触发,但可能中断自动检查、解压或读取上传文件的服务。
受影响版本:PHP 8.2.x(< 8.2.33)、8.3.x(< 8.3.33)、8.4.x(< 8.4.24)、8.5.x(< 8.5.9)。
升级建议
所有受影响用户应立即升级至以下版本:
PHP开发团队在所有活跃分支上同步发布了补丁,凸显了这些漏洞的严重性。各Linux发行版(Fedora ≥42、Enterprise Linux ≥8等)的RPM软件包已同步更新。建议各组织优先审计以下代码路径:依赖PostgreSQL辅助函数处理用户输入的数据库操作、使用BCMath处理外部数值的财务或精度计算逻辑、以及解析Phar或tar归档的文件上传流程。