翻译:doudou586 ... 新闻稿采编:2018-11-12 21:55:32+08

软件发布:2018-11-08

2018-11-08,PostgreSQL全球开发小组发布了所有支持的数据库系统的版本更新,包括11.1,10.6,9.6.11,9.5.15,9.4.20和9.3.25版本。此次的版本发布是解决一个安全问题以及用户近三个所上报的Bug。

所有使用受Bug影响版本的用户建议尽快升级。尤其是使用pg_stat_statements 模块的用户,请浏览"系统更新"段落来了解在安装后,应执行的步骤。

本次更新也是PostgreSQL 9.3版本的最后一次更新,该版本的版本维护周期已到,将不会再进行任何更新了。请仍使用PostgreSQL 9.3的用户尽快升级至社区维护支持的版本。请浏览以下的版本策略了解更多信息。

安全问题

本次更新修正了一个安全漏洞:

  • CVE-2018-16850: , 通过执行CREATE TRIGGER ... REFERENCING,会在pg_upgradepg_dump功能中存在了SQL注入漏洞。

通过创建一个有恶意的触发器,在一个超级权限用户运行pg_upgrade或是执行导出和导入时使用pg_dump时,攻击者可以以管理员权限运行一个SQL查询。这种攻击需要在一些非临时的schema中有 CREATE的权限,或是对一个表有创建TRIGGER的权限。 在PostgreSQL缺省配置下,所有用户都对public的schema有CREATE权限,这一点是会被利用的。

BUG修正和改进

本次更新修正了近几个月所上报的Bug。部分Bug仅影响11版本,但大部分都对目前在支持的版本有影响。

这些修正包括:

  • 确保自动创建的子表索引会被保存在父表索引相同的表空间上;
  • 修正几个与触发器有关的小问题;
  • 修正在对分区临时表上使用ON COMMIT DELETE ROWS选项出现的问题;
  • 修正在使用LEFT JOIN的并行化Hash Join时对NULL值的处理方式;
  • 几处在执行CALL查询时有关命名或是缺省参数的问题;
  • 修正对严谨聚合函数(指聚合时不接受NULL值输入)中含有ORDER BY的列时,会导致对数据扫描的操作;
  • 修正在执行CASE查询时,表达式转变数组类型的问题;
  • 为了防止系统宕机,禁止对正在更新的表达式索引进行优化;
  • 修正在使用特定条件下的SP-GiST而造成的内存泄漏;
  • 修正pg_verify_checksums不正确的对文件的结果反馈;
  • wal_level设置为一个不支持当前已有复制slot的参数时,禁止PostgreSQL的启动;
  • 确保在等待用户输入的状态下,系统会处理已收到的NOTIFYSIGTERM中断信号;
  • 允许PL/Ruby模块可以在最新的PostgreSQL上运行;
  • 修正在Windows平台上对U+FFFF以上编码的字符的检查,它会影响全文搜索功能,以及contrib/ltreecontrib/pg_trgm模块;
  • 修正psql在收到下一个指令前,不显示它当前从NOTIFY收到的信息;
  • 修正在macOS 10.14平台上的编译问题;
  • 几处对Windows平台上系统的更新。

本次更新也包含2018g版本的时区数据,包括智利、斐济、摩洛哥和俄罗斯时区的更新,加上对中国、夏威夷、日本、澳门和北朝鲜等历史数据的更新。

PostgreSQL9.3版本的终止维护(EOL)通知

PostgreSQL 9.3版本现在已到达了终止维护时间(EOL)。社区将不会针对此版本再发布更新或是补丁了。仍然使用9.3版本的用户请尽快升级,请浏览我们的 版本策略 以了解更多信息。

系统更新

所有PostgreSQL的更新版本是累进方式的。对一般小版本的更新,并不需要用户对数据进行导出和导入或是使用pg_upgrade进行更新,只需要停止PostgreSQL服务,更新一下服务器的二进制文件即可。

如果用户的系统中安装并使用了pg_stat_statements模块,并且版本是PostgreSQL 10或是PostgreSQL 11,我们建议用户在升级后要执行以下指令:

    ALTER EXTENSION pg_stat_statements UPDATE;

用户跳过了一个或是多个补丁版本可能也需要额外的后续操作,请浏览详细的发布说明来检查更早版本升级的细节。

相关链接

© 2010 PostgreSQL中文社区