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() 在自动清理进程中崩溃,已向后移植到所有受支持的版本;
  • 修复重复连接名称错误后的连接泄漏,修复处理长度超过 62 字节的连接名称,并改进 contrib/dblink 对包含已删除列的表的处理,已向后移植到所有受支持的版本;
  • 防止函数返回 setof record,其中并非所有返回的行实际上都是相同的行类型,已向后移植到 8.0;
  • 修复 UNION ALL 成员关系的可能重复扫描,已向后移植到 8.2;
  • 在不常见的 btree 失败情况下将 PANIC 降为 ERROR,已向后移植到 8.2;
  • 将 hstore(text, text) 函数添加到 contrib/hstore,以支持从 => 运算符迁移,该运算符已在 9.0 中弃用。函数支持向后移植到 8.2;
  • 在 Win32 上将退出代码 128 视为非致命,已向后移植到 8.2;
  • 修复了未将缓存计划标记为瞬态的错误,导致 CREATE INDEX CONCURRENTLY 未立即使用,已向后移植到 8.3;
  • 修复了在输出列表中具有非严格表达式的情况下,外部连接的内部侧面的子选择的计算,已向后移植到 8.4;
  • 允许在同时指定主机和 hostaddr 的情况下成功进行完整的 SSL 证书验证,已向后移植到 8.4;
  • 改进并行还原处理选择性还原(-L 选项)的能力,已向后移植到 8.4,但存在注意事项;
  • 修复非所有者执行“ALTER TABLE t ADD COLUMN c serial”失败的问题,仅限 9.0 版本。
  • 针对连接删除的几个错误修复,仅限 9.0 版本。

请参阅发行说明,了解包含详细信息的完整更改列表。

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

立即下载新版本

如果您想了解有关此漏洞的更详细解释,请访问常见问题解答

此帖子是从以前版本的 PostgreSQL 网站迁移过来的。对于迁移导致的任何格式问题,我们深表歉意。