资讯 CVE-2026-17543:PHP ext-pgsql 数组转义逃逸 SQL 注入,8.5.9 起修复

2026-09-09 21:02:33

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。
复制全文 生成海报 PHP SQL注入 安全 ext-pgsql PostgreSQL

推荐文章

程序员茄子在线接单