PostgreSQL 全球开发组发布了我们数据库系统的所有受支持版本的更新,包括 11.1、10.6、9.6.11、9.5.15、9.4.20 和 9.3.25。此次发布修复了一个安全问题以及过去三个月报告的 bug。
所有使用受影响 PostgreSQL 版本的用户应尽快更新。如果您在安装中使用了 pg_stat_statements
,请参阅下文“更新”中的说明,了解可能需要的任何更新后步骤。
此次更新也是 PostgreSQL 9.3 的最后一个版本,该版本现已到达生命周期终点,将不再接收任何 bug 或安全修复。如果您的环境仍在使用 PostgreSQL 9.3,请尽快制定计划更新到社区支持的版本。有关更多信息,请参阅我们的 版本策略。
此次发布修复了一个安全漏洞
pg_upgrade
和 pg_dump
中的 SQL 注入,通过 CREATE TRIGGER ... REFERENCING
实现。受影响版本:10, 11
通过专门构造的触发器定义,当超级用户在数据库上运行 pg_upgrade
或在 pg_dump 转储/恢复周期中,攻击者可以以超级用户权限运行任意 SQL 语句。此攻击需要对某个非临时模式拥有 CREATE
权限,或对表拥有 TRIGGER
权限。在默认的 PostgreSQL 配置中,所有用户都对 public
模式拥有 CREATE
权限,因此该漏洞是可被利用的。
此次更新还修复了过去几个月报告的众多 bug。其中一些问题仅影响版本 11,但许多问题影响所有受支持的版本。
这些发布包含以下修复:
ON COMMIT DELETE ROWS
应用于分区临时表时出现的问题LEFT JOIN
时 NULL
值的处理方式CALL
语句时命名参数或默认参数的几个问题NULL
输入的聚合函数)与 ORDER BY
列的问题,从而强制执行严格性检查CASE
语句中表达式被强制转换为数组类型的问题pg_verify_checksums
错误报告不应具有校验和的文件的问题wal_level
设置为不支持现有复制槽的值时启动contrib/ltree
和 contrib/pg_trgm
psql
在收到 NOTIFY
调用消息后,直到下一个命令之前都不会报告该消息的问题此次更新还包含 tzdata 2018g 版本,用于智利、斐济、摩洛哥和俄罗斯(伏尔加格勒)的 DST 法规变更,以及中国、夏威夷、日本、澳门和朝鲜的历史修正。
PostgreSQL 9.3 已达到生命周期终点,将不再接收任何 bug 或安全修复。我们敦促用户尽快开始规划升级到更高版本的 PostgreSQL。有关更多信息,请参阅我们的 版本策略。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
如果您的系统正在使用 pg_stat_statements
,并且您使用的是 PostgreSQL 10 或 PostgreSQL 11 版本,我们建议您在升级后执行以下命令:
ALTER EXTENSION pg_stat_statements UPDATE;
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。