2016-03-31 安全更新发布

发布于 2016-03-31 由 PostgreSQL 全球开发小组发布

PostgreSQL 全球开发小组发布了对我们数据库系统所有受支持版本的更新,包括 9.5.2、9.4.7、9.3.12、9.2.16 和 9.1.21。此版本修复了两个安全问题和版本 9.5 中的一个索引损坏问题。它还包含了早期版本的各种错误修复。PostgreSQL 9.5.0 或 9.5.1 的用户应尽快更新。

RLS、BRIN 的安全修复

此版本修复了安全漏洞 CVE-2016-2193,其中查询计划可能会在同一会话中被多个 ROLE 重用。这可能会导致为查询使用错误的行级安全 (RLS) 策略。

此更新还修复了 CVE-2016-3065,这是一个由在 BRIN 索引页中使用 pageinspect 触发的服务器崩溃错误。由于攻击者可能会暴露服务器内存的几个字节,因此此崩溃被视为安全问题。

缩写键和损坏的索引

在此版本中,由于收到索引损坏的报告,PostgreSQL 项目被迫禁用 9.5 的缩写键性能特性,该特性用于许多索引。这可能会影响 TEXT、VARCHAR 和 CHAR 列上的任何 B 树索引,这些索引不在 “C” 区域设置中。其他区域设置中的索引将失去该特性的性能优势,并且如果存在索引损坏,则应进行 REINDEX 操作。如果项目找到问题的解决方案,该特性可能会在未来的版本中重新启用。有关更多信息,请参阅发行说明和 关于此问题的 wiki 页面

其他修复和改进

除了上述内容外,此版本还根据用户在过去几个月报告的错误修复了许多其他问题。这包括影响 PostgreSQL 多个版本的错误,例如

  • 修复索引 ROW() 比较中的两个错误
  • 避免因重命名文件而导致数据丢失
  • 防止在 SELECT FOR UPDATE/SHARE 中重新检查行时出错
  • 修复多个 json_ 和 jsonb_ 函数中的错误
  • 正确记录 INSERT ON CONFLICT 的锁等待
  • 在达到一致状态之前忽略 recovery_min_apply_delay
  • 修复 pg_subtrans XID 回绕问题
  • 修复逻辑解码中的各种错误
  • 修复具有嵌套安全屏障视图的计划器错误
  • 防止 GIN 索引中的内存泄漏
  • 修复 ispell 字典的两个问题
  • 避免在旧 Windows 版本上崩溃
  • 跳过在 pg_upgrade 中创建错误的删除脚本
  • 正确地将空数组转换为 PL/Perl
  • 使 PL/Python 能够处理标识符名称

此更新还包含 tzdata 版本 2016c,其中包含阿塞拜疆、智利、海地、巴勒斯坦和俄罗斯的更新,以及其他地区的历史修复。

更新

9.5 版的用户需要对他们在非 C 区域设置中字符列上创建的任何索引进行 REINDEX 操作。跳过了多个更新版本的其他版本的用户可能需要执行其他更新后步骤;有关详细信息,请参阅发行说明。

所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade 即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。

链接