PostgreSQL 9.4.1、9.3.6、9.2.10、9.1.15 和 9.0.19 发布

发布于 2015-02-05,作者:PostgreSQL 全球开发组

PostgreSQL 全球开发组发布了一个重要更新,其中包含对 PostgreSQL 数据库系统所有受支持版本的多个安全问题的修复,包括次要版本 9.4.1、9.3.6、9.2.10、9.1.15 和 9.0.19。此更新包括安全修复和自上次发布以来发现的问题的修复。特别是对于 9.4 更新,JSON 和 JSONB 数据类型的 Unicode 字符串转义方式发生了更改。

所有用户都应在下次机会时更新他们的 PostgreSQL 安装。

安全修复

此更新修复了过去几个月在 PostgreSQL 中报告的多个安全问题。所有这些问题都需要事先进行身份验证,有些还需要其他条件,因此不被认为是普遍紧急的。但是,用户应检查下面列出的已修补的安全漏洞,以防他们特别容易受到攻击。

  • CVE-2015-0241 “to_char” 函数中的缓冲区溢出。
  • CVE-2015-0242 替换 printf 函数系列中的缓冲区溢出。
  • CVE-2015-0243 pgcrypto 扩展中的函数内存错误。
  • CVE-2015-0244 扩展协议消息读取中的错误。
  • CVE-2014-8161 约束违规错误可能导致显示用户通常没有权查看的列中的值。

此更新还修复了之前报告的问题,即在 Windows 上进行回归测试期间,测试 postmaster 进程容易受到未经授权的连接攻击。此漏洞已在之前的更新版本中修复了非 Windows 平台。

有关这些问题以及较旧的已修补问题的更多信息,请访问 PostgreSQL 安全页面

JSON 和 JSONB Unicode 转义

PostgreSQL 9.4.0 中 JSON 和 JSONB 的 Unicode 转义字符串的处理方式已更改,这可能会破坏某些用户的兼容性。为了修复一些不一致之处,JSONB 类型不再接受转义序列“\u0000”。JSON 类型仅在不需要转换为非转义形式的上下文中接受“\u0000”。有关更多详细信息,请参阅发行说明。

其他修复和改进

除了上述内容外,此累积更新版本中还修复了 60 多个报告的问题。其中一些仅影响 9.4 版本,但其中许多修复了旧版本中存在的问题。这些修复包括

  • 处理非 ASCII 挪威语 Windows 区域设置名称。
  • 避免将数据库移动到新表空间并再次移回时出现数据损坏。
  • 确保在 ALTER DATABASE 操作期间正确复制 UNLOGGED 表。
  • 避免在锁定最近修改的行时出现死锁。
  • 修复两个 SELECT FOR UPDATE 查询问题。
  • 防止最短优先正则表达式匹配出现假阴性。
  • 修复 tsquery contains 运算符中的假阳性和假阴性。
  • 修复 xpath() 中的命名空间处理。
  • 防止生成行的函数创建空的列名称。
  • 使 autovacuum 使用每个表的 cost_limit 和 cost_delay 设置。
  • 当 autovacuum=off 时,将 autovacuum 工作限制为仅用于环绕防止。
  • 对 9.4 中的逻辑解码进行多项修复。
  • 修复由于页面替换导致的热备查询中的瞬态错误。
  • 防止在恢复或备用提升结束时重复 WAL 文件存档。
  • 防止仅模式转储的并行恢复中出现死锁。

除了上述修复之外,以下 contrib 模块和扩展在此版本中修复了错误:pg_upgrade、auto_explain、hstore、pageinspect、pgcrypto、pg_test_fsync、tablefunc 和 xml2。此外,多个 contrib 模块中的多个函数已修改为正确的波动级别。还有基于 Coverity Scan 静态分析器发现的次要问题的多项清理修复。

此更新还包含对 PostgreSQL 时区文件的许多更改。这包括更新到 tzdata 版本 2015a,其中包含对智利、墨西哥、特克斯和凯科斯群岛以及斐济的更新。PostgreSQL 现在在为历史上可更改的时区分配基于时区缩写的偏移量时会考虑日期。我们还对时区缩写进行了全面清理,并添加了“CST”作为中国标准时间的缩写。

与其他次要版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade 即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。跳过多个更新版本的用户可能需要执行其他更新后步骤;有关详细信息,请参阅发行说明。

链接:* 下载 * 发行说明 * 安全页面