2016-08-11 安全更新发布

由 PostgreSQL 全球开发组发布于 2016-08-11

PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 9.5.4、9.4.9、9.3.14、9.2.18 和 9.1.23。此版本修复了两个安全问题。它还修复了过去三个月报告的许多其他错误。依赖数据库用户之间安全隔离的用户应尽快更新。其他用户应计划在下一个方便的停机时间更新。

安全问题

此版本关闭了两个安全漏洞

  • CVE-2016-5423:某些嵌套的 CASE 表达式可能导致服务器崩溃。
  • CVE-2016-5424:具有嵌入特殊字符的数据库和角色名称可能允许在管理操作(如 pg_dumpall)期间进行代码注入。

第二个问题的修复还为 psql 的 \connect 命令添加了一个选项 -reuse-previous。更新后,pg_dumpall 也将拒绝处理包含换行符的数据库和角色名称。有关这些问题及其如何影响向后兼容性的更多信息,请参阅发行说明。

错误修复和改进

此更新还修复了过去几个月报告的许多错误。其中一些问题仅影响 9.5 版本,但许多问题影响所有受支持的版本

  • 修复 IS NULL/IS NOT NULL 与复合值的行为不当
  • 修复 INSERT ... ON CONFLICT 在与其他 SQL 功能一起使用时无法正常工作的三个区域。
  • 使 INET 和 CIDR 数据类型正确拒绝错误的 IPv6 值
  • 防止 NaN 输入时 "point ## lseg" 运算符崩溃
  • 避免 pg_get_expr() 中可能发生的崩溃
  • 修复 to_number() 中的多个单字节缓冲区越界读取
  • 如果指定了 WITH NO DATA,则不要无谓地计划查询
  • 避免在昂贵的 heap_update() 路径中出现不安全的崩溃状态
  • 修复行锁定操作的 WAL 重放期间的提示位更新
  • 避免使用 FOR KEY SHARE 时出现不必要的 “无法序列化访问”
  • 避免在指定的变量为空字符串时在 postgres -C 中崩溃
  • 修复逻辑解码和子事务的两个问题
  • 确保后端看到共享目录的最新统计信息
  • 防止在升级的数据库中清理 multixact ID 时可能发生的故障
  • 当手动 ANALYZE 指定列时,不要重置 changes_since_analyze
  • 修复 ANALYZE 对包含空值的列的 n_distinct 的高估
  • 修复 b 树标记/恢复处理中的错误
  • 修复构建大型(大于 shared_buffers)哈希索引的问题
  • 防止在 GiST 索引构建中使用 NaN 值时出现无限循环
  • 修复最近邻索引扫描期间可能发生的崩溃
  • 修复“PANIC:无法添加 BRIN 元组”错误
  • 防止在后台工作程序关闭期间可能发生的崩溃
  • 修复并行 pg_dump 和 pg_restore 中的许多问题
  • 使 pg_basebackup 接受 -Z 0 作为不压缩
  • 使回归测试对丹麦语和威尔士语区域设置安全

libpq 客户端库也已更新,以支持未来的两部分 PostgreSQL 版本号。此更新还包含 tzdata 版本 2016f,其中包含克麦罗沃、新西伯利亚、阿塞拜疆、白俄罗斯和摩洛哥的更新。

9.1 版本 EOL 警告

PostgreSQL 9.1 版本将于 2016 年 9 月终止生命周期。该项目预计仅为该版本发布一次更新。我们敦促用户尽快开始计划升级到更高版本的 PostgreSQL。有关更多信息,请参阅我们的版本控制策略。

更新

所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;有关详细信息,请参阅早期版本的发行说明。

链接:* 下载 * 发行说明 * 安全页面 * 版本控制策略