PHP在最新的维护版本中集中修复了三处安全漏洞,其中两项为高危级别,分别可能被利用发动SQL注入攻击和触发内存越界写入,另一项则可导致服务器进程崩溃。这些漏洞均出现在广泛使用的PHP可选扩展中——PostgreSQL扩展、BCMath扩展以及Phar扩展,官方已督促用户尽快升级,尤其是那些应用程序会处理不可信输入或上传归档文件的系统。
最为严重的漏洞编号为CVE-2026-17543,影响用于连接PostgreSQL的扩展。问题出在php_pgsql_convert()函数,该函数负责将用户提供的值经过PostgreSQL的PQescapeStringConn()转义后,放进E'...'格式的转义字符串常量中。当PostgreSQL的standard_conforming_strings设置开启时(该配置从9.19.19.1版本起就是默认状态),这种处理方式并没有安全地转义反斜杠,攻击者由此能够注入恶意SQL命令,窥探甚至篡改数据库数据。PHP的修复方案是,在处理这类参数时改用不要求反斜杠转义的字符串常量形式,从而切断注入路径。
第二个高危漏洞CVE-2026-17544出在BCMath扩展的bccomp()函数上。当应用程序传入攻击者控制的数字串并搭配特定的scale参数时,内部函数bc_str2num()在截断小数位并移除尾随零的过程中,虽然减小了分配的内存缓冲区,却没有同步更新指向已复制小数数据末尾的指针。这样一来,后续的数据复制操作就会超出分配的缓冲区范围,造成越界写入,可能破坏栈或堆上的内存。根据运行环境和利用条件,这类内存破坏轻则导致进程崩溃,重则可能被转化成更严重的攻击向量。补丁在截断尾部零之后更新了小数数据的结束指针,确保拷贝范围与缓冲区尺寸匹配。
第三个漏洞被分配编号CVE-2026-7260,影响Phar扩展,可致PHP进程崩溃。phar_get_link_source()函数在解析Phar归档中的符号链接时,会递归追踪,却没有限制递归深度,也没有检测循环引用。攻击者只需构造一个包含循环符号链接的tar格式Phar压缩包,一旦被用户或应用程序读取,就会触发无限递归,导致PHP发生段错误而崩溃,形成一次中危的拒绝服务(CVSS 6.5)。即使系统只是自动检查、提取或读取上传的文件,也可能因此中断服务。
官方发布的修复版本包括PHP 8.2.33、8.3.33、8.4.24和8.5.9。管理员除升级PHP版本外,还应审视所在环境对这些受影响扩展的依赖情况,尽可能限制未经过滤的输入,以降低潜在风险。
热门跟贴