... 新闻稿采编:
新版本发布说明
2017-11-09,PostgreSQL全球开发小组发布了所有支持的数据库系统的版本更新,包括10.1,9.6.6,9.5.10,9.4.15,9.3.20和9.2.24版本。
此次版本发布修复了三个安全问题,还修复了BRIN索引问题、逻辑复制问题和其他在过去三个月中报告的bug。
所有使用受影响版本的用户应尽快升级。如果用户使用BRIN索引或是contrib目录下的start-scripts脚本,也请浏览详细发布说明并关注
升级后的操作步骤。
安全问题
本次版本发布经修复的三个安全漏洞:
- CVE-2017-12172:启动脚本允许数据库管理员修改根文件
- CVE-2017-15098:JSON函数中的内存泄露
- CVE-2017-15099:INSERT … ON CONFLICT DO UPDATE无法强制执行SELECT权限
CVE-2017-12172: 启动脚本允许数据库管理员能修改root用户所属的文件
在新版本发布前,postmaster进程(新版本中已修改为postgres)的所有者是root帐号时的启动日志文件即使是文件所有者是root帐号,日志文件也会打开。
这种情况下,数据库的所有者可以指定一个他们实际上没有读写权限的文件进行日志数据的保存,从而造成那个文件的安全性问题。
补丁发布后,确保了只能以指定运行PostgreSQL服务器的帐号来打开日志文件。即用户需要确保启动日志文件的所有者是运行PostgreSQL服务器的指定用户。
CVE-2017-15099: INSERT … ON CONFLICT DO UPDATE 未执行 SELECT 权限的检查
在新版本发布前,"INSERT … ON CONFLICT DO UPDATE" 不会检查执行当前查询的用户是否有权限对当前键值是否冲突的索引表进行SELECT的权限检查。并且,对一个已启用行级安全的表,"INSERT … ON CONFLICT DO UPDATE"的查询在对该表进行更新前,也不检查该表的SELECT策略。
补丁发布后,确保了 "INSERT … ON CONFLICT DO UPDATE"的查询在操作前时检查表的权限和行级安全策略。
Bug修复和改进
本次更新也修正了一系列最近几个月用户反馈的Bug。一些Bug只影响10.0版本,但也有很多影响所有仍在支持中的版本。
- 修正了BRIN索引中的一个可能会导致部分行记录未加入索引的冲突条件。
- 修正了从PL函数中执行逻辑解码可能会导致的溢出。
- 修正逻辑复制中的几个小问题。
- 恢复与INSERT/UPDATE/DELETE查询有关的CTE的操作至10.0以前的版本。
- 防止在处理嵌套触发器时的偶发出错。
- 当过滤FILTER选项设置为FALSE时,不对一个聚合函数的变量表达式进行计算。这也符合SQL标准的要求。
- 修正多个GROUPING SETS列中含有相同的多个变量时,会导致不正确的结果。
- 修正在返回一组记录集的函数中一个全使用周期内SELECT查询可能存在的内存泄漏。
- 几处有关并行查询的修正,包括特定的含有位图扫描的并行查询可能引起的出错。
- 修正json_build_array(), json_build_object(), jsonb_build_array() 和 jsonb_build_object() 等几个函数在处理VARIADIC参数的问题。
- 防止极限浮点数值被转换为数值类型。
- 修正autovacuum进程的“work item”逻辑,以阻止可能的出错和无提醒地减少。
- 几个有关在视图结尾增加元旦时对VIEW视图功能的修正。
- 修正用户创建的range范围数据类型的哈希值的自动检查。
- 优化查询规划时使用扩展统计数据的功能。
- 防止当过早出现 statement_timeout 事件时,idle_in_transaction_session_timeout参数被忽略的问题出现。
- 修正在一个会话中在执行查询还未超过20亿的事务,会偶发的NOTIFY信息的丢失。
- 几处与文件系统交互方面的修正。
- 当使用COPY或是lo_export()函数创建文件失败后,正确恢复umask设置的问题修正。
- 修正pg_dump执行时以有效的顺序生成GRANT指令。
- 修正pg_basebackup在检查平台之前对表空间的路径与逻辑路径的匹配操作, 以帮助提升Windows平台下的系统兼容性。
- 修正libpq在读取"~/.pgpass"文件时,不判断用户主目录是否存在的问题。
- 对 ecpg 功能的几处更新。
本次更新也包括2017c版本的时区数据,包括Fiji, Namibia, Northern Cyprus, Sudan, Tonga 和Turks & Caicos Islands等地区的新数据,也包括对 Alaska, Apia, Burma, Calcutta, Detroit, Ireland, Namibia 和Pago Pago等地区数据的历史更新。
9.2版本的终止维护(EOL)通知
PostgreSQL 9.2版本现在已到达了终止维护时间(EOL)。社区将不会针对此版本再发布更新或是补丁了。仍然使用9.2版本的用户请尽快升级,请浏览我们的版本策略以了解更多信息。
相关链接