↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

psqlODBC 18.00.0005 发布:修复 CVE-2026-109448

发布于 2026-10-14,Postgresql ODBC
安全相关 相关开源软件

psqlODBC 团队发布了 PostgreSQL 官方 ODBC 驱动 psqlODBC 18.00.0005。本版本修复了一个安全漏洞和两个缺陷,建议所有用户升级。

安全问题

CVE-2026-109448:绑定超过 32767 个参数时发生堆内存损坏

  • CVSS 3.1 基础评分:5.9(中危)
  • 受影响版本:08.01.0102 至 18.00.0004。

psqlODBC 使用有符号 16 位字段保存语句绑定的参数数量。当应用为一条语句绑定超过 32768 个参数时,驱动会在存放参数绑定信息的内存之外写入零值。应用可能崩溃,也可能带着损坏的内存继续运行。如果应用允许不可信输入决定绑定参数的数量,例如根据用户提交的值构造 IN (?, ?, ...) 列表,就会暴露于此问题。

现在,SQLBindParameter 会拒绝大于 32767 的参数编号,并返回 SQLSTATE 07009。由于 SQLNumParams 和 SQL_DESC_COUNT 都是 16 位值,ODBC 无法报告超过 32767 个参数。此前的版本也无法执行包含超过 32767 个参数的语句,因此这项变更不会破坏此前正常运行的应用。

如果暂时无法升级,请限制应用根据外部输入生成的参数数量,或将很长的值列表作为单个数组参数传入,例如使用 = ANY(?)。

psqlODBC 团队感谢 Richard Kuesters 报告此问题。

详情参阅安全公告 GHSA-cmfx-rm3r-p2jr。

缺陷修复

  • 在服务器端预备的语句包含 1000 个或更多参数时,可能出现 type "timestam" does not exist 等错误。从第 1000 个参数开始,驱动会截断每个参数后面的类型名称,以适应固定大小的缓冲区。
  • 从 18.00.0003 开始,通过微软的 OLE DB Provider for ODBC(MSDASQL)使用 bytea 参数时,例如从 ADO 调用,会出现“Type is invalid”错误。

Windows 软件包现在使用 OpenSSL 3.5.9 构建。

下载

x86、x64 和 ARM64 的 Windows 安装程序及合并模块可从 PostgreSQL 下载站和 GitHub 发布页获取。源代码位于 GitHub。

完整变更列表见发布说明。

请通过 psqlODBC 问题跟踪器或 pgsql-odbc 邮件列表报告缺陷。