CVE-2026-17543:PHP ext-pgsql 数组转义逃逸 SQL 注入,8.5.9 起修复
PHP 8.5.9(及 8.2.33 / 8.3.33 / 8.4.24)修复了 ext-pgsql 中因反斜杠转义逃逸导致的 SQL 注入。受影响的是 pg_insert()、pg_update()、pg_select()、pg_delete() 这一组把数组参数转换成 SQL 的便捷函数。
漏洞根因
PostgreSQL 标准字符串里反斜杠默认不是转义符(由 standard_conforming_strings 控制),而 PHP 的转义逻辑没有对齐这一行为。攻击者可以在参数中放入反斜杠 + 单引号,闭合字符串字面量后拼接额外 SQL,从而逃逸出原定的查询上下文。
影响范围
- 受影响扩展:ext-pgsql。
- 受影响函数:
pg_insert()、pg_update()、pg_select()、pg_delete()。 - 危险输入点:
pg_insert($conn, 'users', ['name' => $_POST['name']])这类把用户输入直接放入关联数组的调用方式。 - MySQL 的 PDO / mysqli 不受此漏洞影响;漏洞产生于 PostgreSQL 与 PHP 对反斜杠转义语义的差异。
评分与参考
- 官方 CVSS 评分:8.1
- NVD 3.1 向量评分:9.8 Critical
- CVE 编号:CVE-2026-17543
- 安全通告:GHSA-7qpv-r5mr-78m4
修复方案
升级到以下版本及以上:
- 8.5.9
- 8.4.24
- 8.3.33
- 8.2.33
具体升级命令按所在发行版核对。
更稳妥的做法是不要依赖自动拼接 SQL 的便捷函数,改用显式参数化查询:
- PDO 预处理语句
pg_prepare()+pg_execute()
这样用户输入始终作为参数绑定,不经过字符串转义与 SQL 拼接路径。
同批修复的其它问题
- BCMath
bccomp()越界写:CVE-2026-17544,影响 PHP 8.4 / 8.5。 - Phar 循环符号链接崩溃:CVE-2026-7260。