安全更新 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() 报告正确的纪元
  • 修复规划器处理子 SELECTS 时,引用来自周围查询的外连接的可空侧的变量的问题
  • 修复输出列不是简单变量的 UNION ALL 子查询的规划
  • 修复 pg_attribute 非常大时会话启动缓慢的问题
  • 确保顺序扫描合理地检查查询取消
  • 在打印视图或规则时安全地显示整行变量
  • 修复 COPY FROM 以正确处理与无效编码相对应的空标记字符串
  • 修复包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE
  • 修复 PREPARE TRANSACTION 以便在存在咨询锁时正常工作
  • 修复扩展脚本中使用的临时或瞬态表的错误
  • 确保 autovacuum 工作进程正确执行堆栈深度检查
  • 修复日志收集器在高负载下不丢失日志一致性
  • 修复日志收集器以确保在收到 SIGHUP 后将重新启动文件轮换
  • 修复 GIN 索引的 WAL 重放逻辑,以避免在索引随后被删除时失败
  • 避免在提交仅修改临时表的事务时出现同步复制延迟

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

此更新包括以下两个安全问题的修复

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

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

  • CVE-2012-2655:忽略过程语言的调用处理程序的 SECURITY DEFINERSET 属性

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

所有受支持的 PostgreSQL 版本都受到影响。 有关修复和步骤的详细信息,请参阅每个版本的发行说明以获取完整的更改列表。

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