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

发布安全更新 2012-06-04

发布时间:2012-06-04,作者:PostgreSQL 全球开发组

PostgreSQL 全球开发组今日发布了 PostgreSQL 数据库系统所有活动分支的安全更新,包括版本 9.1.49.0.88.4.128.3.19

使用可选的 pgcrypto 模块中的 DES 加密 crypt(text, text) 函数的用户应立即升级其安装。其他所有数据库管理员请务必在下一次计划停机时升级您的 PostgreSQL 版本。有关安全修复的更多详细信息如下。

此次发布包含对 9.1 版本的 42 项修复,以及对旧版本的少量修复,包括:

  • 修复 citext 升级脚本,以处理 citext 数组和基于 citext 的域的排序规则
  • 修复时区处理
  • 修复 textcharname 的转换,以在多字节编码中正确执行字符串截断
  • 修复 to_tsquery() 中的内存复制错误
  • 确保 txid_current() 在热备(hot standby)模式下执行时报告正确的 epoch
  • 修复规划器(planner)对来自周围查询外连接可空侧的变量的子 SELECT 的处理
  • 修复带有非简单变量输出列的 UNION ALL 子查询的规划
  • pg_attribute 非常大时,修复缓慢的会话启动问题
  • 确保顺序扫描(sequential scans)能合理地频繁检查查询取消信号
  • 在打印视图(views)或规则(rules)时安全地显示整行变量
  • 修复 COPY FROM 以正确处理与无效编码对应的 null 标记字符串
  • 修复包含 RETURNING 子句的可写 CTE(writable CTEs)的 EXPLAIN VERBOSE
  • 修复 PREPARE TRANSACTION 在存在咨询锁(advisory locks)时能正常工作
  • 修复在扩展脚本(extension scripts)中使用临时表或瞬态表(temporary or transient tables)时的错误
  • 确保自动清理(autovacuum)工作进程能正确执行堆栈深度检查
  • 修复日志收集器(logging collector)在高负载下不会丢失日志一致性
  • 修复日志收集器,确保其在接收到 SIGHUP 信号后能重新启动文件轮转
  • 修复 GIN 索引的 WAL 重放逻辑,以避免在索引随后被删除时失败
  • 避免在提交仅修改了临时表的事务时出现同步复制延迟

与其他次要版本发布一样,用户无需转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。数据库重启后执行更新后的步骤。如果您使用 citext 数据类型,并通过运行 pg_upgrade 从之前的较主版本升级,请参阅 9.1.4 的发布说明以了解重要的升级后步骤。

本次更新包含两个安全修复,针对以下问题:

  • CVE-2012-2143:修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的密码转换

此漏洞影响使用可选 pgcrypto 模块中的 crypt(text, text) 函数、DES 加密以及非 ASCII 密码的 PostgreSQL 用户。受影响的密码是指包含字节值 0x80 的密码。该字节之后的所有字符都会被忽略,导致有效密码比应有的更短,更容易被破解。升级后,任何包含此类字节的密码都需要重新生成。

  • CVE-2012-2655:忽略过程语言(procedural language)调用处理程序(call handler)的 SECURITY DEFINERSET 属性

将这些属性应用于调用处理程序可能会导致服务器崩溃。

所有受支持的 PostgreSQL 版本均受此影响。请参阅每个版本的发布说明,以获取完整的更改列表,其中包含修复的详细信息和步骤。

立即在主 下载页面 下载新版本。