【安全快讯】PHP官方推送维护版本更新,一次性修补3个安全漏洞,风险等级覆盖高危至中危,漏洞分别存在于三款Web业务高频使用的可选扩展中,可诱发SQL注入、内存损坏、服务器进程崩溃等安全事件,运维与开发人员需及时处置。
本次受影响组件:ext-pgsql、ext-bcmath、ext-phar。
如果业务存在接收外部不可信输入、支持压缩包上传解析等场景,风险暴露概率大幅上升,建议优先完成版本升级。
CVE-2026-17543|PostgreSQL扩展
漏洞位于PostgreSQL扩展函数`php_pgsql_convert()`,`pg_insert()`、`pg_update()`、`pg_select()`、`pg_delete()`等常用快捷接口均会调用该函数。
原有逻辑借助`PQescapeStringConn()`对用户输入进行转义处理后,将数据封装至`E'...'`转义字符串格式。
自PostgreSQL 9.1版本起默认开启`standard_conforming_strings`参数,在此配置下,反斜杠无法被安全转义,形成注入突破口。
攻击者精心构造恶意输入,即可实现SQL指令注入,非法读取、篡改数据库内业务数据。
修复方案:参数处理过程中改用非转义字符串常量,消除转义逻辑冲突。
漏洞触发点为高精度运算函数`bccomp()`,当外部可控数字字符串搭配特定精度参数传入程序时,漏洞将会触发。
底层`bc_str2num()`负责截断小数位、清除末尾无效0;代码缩减内存缓冲区分配大小后,未同步更新小数数据拷贝终止指针。
最终出现数据拷贝长度超出缓冲区上限,引发堆/栈内存越界写入。
内存破坏类漏洞后果不一,轻则造成程序异常崩溃,极端环境下可被利用实现进一步权限突破。
修复方案:截断末尾零值后同步修正数据边界,保证写入数据与缓冲区容量匹配。
问题根源在`phar_get_link_source()`函数:解析Phar压缩包内软链接时,无递归深度限制,也不会识别循环引用链路。
威胁利用方式:构造包含循环软链接的恶意tar格式Phar文件。程序解析文件时触发无限递归,引发段错误(Segmentation fault),直接造成PHP进程宕机,形成拒绝服务攻击。
利用前提:应用需要加载、解析、解压外部上传的归档文件。面向公网、自动处理上传文件的业务需要重点防范。
升级至以下正式修复版本:PHP 8.2.33 / 8.3.33 / 8.4.24 / 8.5.9
同时自查业务代码三类场景:
1. 使用PostgreSQL拓展封装的增删改查快捷函数;
2. BCMath运算接口接收外部传入数字参数;
3. 文件上传流程中自动解析Phar、Tar压缩包。