2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 2010-10-05 安全更新

发布于 2010-10-05

PostgreSQL 全球开发组今日发布了 PostgreSQL 对象关系数据库系统的所有活跃分支的安全更新,包括 9.0.1、8.4.5、8.3.12、8.2.18、8.1.22、8.0.26 和 7.4.30 版本。这是 PostgreSQL 7.4 和 8.0 版本的最后一次更新。

此次更新包含一个安全补丁,可防止通过修改“受信任”过程语言函数来未经授权地提升权限,并修复了若干关于正常运行时间、数据完整性和错误处理的小问题。

PL/perl 和 PL/tcl 过程语言以及 SECURITY DEFINER 的用户应立即更新其安装。强烈建议所有其他数据库管理员在下一次计划停机时更新您的 PostgreSQL 版本。

7.4.30 和 8.0.26 小版本是 PostgreSQL 7.4 和 8.0 的最终版本,因为这两个版本已不再受支持。PostgreSQL 社区也将在今年晚些时候停止发布 8.1 版本的更新。鼓励用户尽快升级到新版本。请参阅我们的发布支持策略

https://wiki.postgresql.ac.cn/wiki/PostgreSQL_Release_Support_Policy

此安全漏洞允许任何拥有“受信任”过程语言使用权的普通 SQL 用户在运行时修改过程语言函数的内容。根据 CVE-2010-3433 的详细说明,已认证的用户可以通过劫持 SECURITY DEFINER 函数(或其他现有的身份验证更改操作)来实现权限提升。仅仅存在过程语言并不会使您的数据库应用程序易受攻击。

此版本已对 PL/Perl 和 PL/tcl 进行修补;PL/PHP 的补丁正在准备中。所有具有受信任版本的第三方过程语言也易受此问题影响。公告 CVE-2010-3433:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3433

此版本包括大量的内部文档更新和 130 项错误修复,包括:

  • 防止 show_session_authorization() 在 autovacuum 进程中崩溃,已向所有支持的版本回溯;
  • 修复重复连接名称错误后的连接泄漏,修复处理长度超过 62 字节的连接名称,并改进 contrib/dblink 对包含已删除列的表的处理,已向所有支持的版本回溯;
  • 防御返回 setof record 的函数,其中并非所有返回的行都实际上是同一行类型,已回溯到 8.0;
  • 修复 UNION ALL 成员关系可能重复扫描的问题,已回溯到 8.2;
  • 将不频繁的 btree 故障情况下的 PANIC 降级为 ERROR,已回溯到 8.2;
  • 向 contrib/hstore 添加 hstore(text, text) 函数,以支持迁移远离在 9.0 中已弃用的 => 运算符。函数支持已回溯到 8.2;
  • 将 Win32 上的退出代码 128 视为非致命错误,已回溯到 8.2;
  • 修复缓存计划未被标记为瞬态的问题,导致 CREATE INDEX CONCURRENTLY 未立即使用,已回溯到 8.3;
  • 修复在外连接的内侧是包含非严格表达式的子查询时出现的评估问题,已回溯到 8.4;
  • 允许在同时指定主机和主机地址的情况下,完全 SSL 证书验证成功,已回溯到 8.4;
  • 改进并行恢复在处理选择性恢复(-L 选项)方面的能力,已回溯到 8.4(有注意事项);
  • 修复非所有者执行 "ALTER TABLE t ADD COLUMN c serial" 时失败的问题,仅限 9.0。
  • 修复连接移除中的若干错误,仅限 9.0。

有关更改的完整详细列表,请参阅发布说明。

与其他小版本一样,用户无需转储和重新加载数据库即可应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件。跳过一个以上更新的用户可能需要查看发布说明以了解额外的、更新后的步骤。

立即下载新版本

如果您想更详细地了解此漏洞,FAQ 现已提供

本文已从先前版本的 PostgreSQL 网站迁移。对于迁移过程中可能出现的任何格式问题,我们深表歉意。