

PHP在其最新维护版本中修复了三个安全漏洞,其中包括可能导致应用程序遭受SQL注入和越界内存写入的高危漏洞。
这些漏洞影响Web应用程序常用的可选PHP扩展:ext-pgsql、ext-bcmath和ext-phar。建议各组织尽快更新其PHP环境,尤其是那些处理不可信输入或上传归档文件的应用程序。
Part01
PostgreSQL扩展SQL注入漏洞
最严重的漏洞(CVE-2026-17543)影响PostgreSQL扩展,存在于php_pgsql_convert()函数中。pg_insert()、pg_update()、pg_select()和pg_delete()等便捷函数均会调用该函数。存在漏洞的代码使用PQescapeStringConn()对用户提供的值进行转义,随后将结果放入格式为E'…'的转义字符串常量中。
当PostgreSQL的standard_conforming_strings设置开启时(自PostgreSQL9.1版本起该设置默认启用),反斜杠在此上下文中无法被安全转义。
攻击者可以利用该漏洞注入SQL命令,从而可能访问或修改数据库数据。PHP通过在处理这些参数时改用非转义字符串常量修复了该问题。
Part02
BCMath扩展内存损坏漏洞
第二个高危漏洞(CVE-2026-17544)影响BCMath扩展的bccomp()函数。当应用程序将攻击者控制的数字字符串与特定的scale值一起传入时,便会触发该问题。
该bug位于bc_str2num()函数中,PHP在此截断小数位并移除末尾的零。代码减少了分配的缓冲区大小,但未更新用于标记已复制小数数据末尾的指针。
因此,PHP可能复制超过所分配缓冲区容量的数据,导致越界写入,进而破坏栈或堆内存。根据应用条件和PHP运行时环境的不同,内存损坏漏洞可能导致进程崩溃,或为更严重的利用创造条件。
该补丁在截断零值后更新小数数据的末尾指针,确保复制的数据与分配的缓冲区大小一致。
Part03
Phar扩展拒绝服务漏洞
第三个漏洞(CVE-2026-7260)影响Phar扩展,可导致PHP进程崩溃。
该漏洞源于phar_get_link_source()函数,该函数会递归追踪Phar归档中存储的符号链接,且未强制实施递归深度限制,也未检测循环引用。
包含循环符号链接的恶意tar格式Phar归档可触发无限递归,导致PHP因段错误(segmentation fault)而崩溃,从而造成中等级别的拒绝服务(CVSS6.5)。
该Phar漏洞需要用户或应用程序处理特制的归档文件才能触发。不过,它仍可能破坏自动检查、解压或读取上传文件的服务。
Part04
升级建议
受影响的用户应将PHP升级至8.2.33、8.3.33、8.4.24或8.5.9版本。
PHP管理员还应审查依赖PostgreSQL辅助函数、使用外部提供值执行BCMath运算,以及解析Phar或tar归档的文件上传流程的相关应用程序。
参考来源:
PHP Patches Three Flaws Enabling SQL Injection, Memory Corruption and Server Crashes
https://cybersecuritynews.com/php-patches-three-flaws/



