PostgreSQL 全球开发小组已发布我们数据库系统所有受支持版本的更新,包括 11.3、10.8、9.6.13、9.5.17 和 9.4.22。此版本修复了 PostgreSQL 服务器中的两个安全问题、两个 PostgreSQL Windows 安装程序中发现的一个安全问题,以及在过去三个月内报告的 60 多个错误。
使用 EnterpriseDB 和 BigSQL 的 Windows 安装程序安装 PostgreSQL 的用户应尽快升级。同样,运行任何版本的 PostgreSQL 9.5、9.6、10 和 11 的用户也应计划尽快升级。
所有其他用户应计划在下次计划停机时应用此更新。
此版本已关闭四个安全漏洞
由于 EnterpriseDB 和 BigSQL Windows 安装程序都没有锁定 PostgreSQL 二进制安装目录和数据目录的权限,因此无特权的 Windows 用户帐户和无特权的 PostgreSQL 帐户可能会导致 PostgreSQL 服务帐户执行任意代码。
此漏洞存在于这些安装程序的所有受支持的 PostgreSQL 版本中,并且可能存在于较旧的版本中。两组安装程序都已修复新安装和现有安装的这些目录的权限。如果您使用其他方法在 Windows 上安装了 PostgreSQL,我们建议您检查您的 PostgreSQL 二进制目录是否仅对受信任的用户可写,并且您的数据目录是否仅对受信任的用户可访问。
PostgreSQL 项目感谢 Conner Jones 报告此问题。
在此版本之前,运行 PostgreSQL 11 的用户可以通过向分区表执行精心制作的 INSERT 语句来读取服务器内存的任意字节。
PostgreSQL 通过对列中可用的数据进行采样来维护表的统计信息;在查询计划过程中会参考此数据。在此版本之前,能够执行 SQL 查询且具有读取给定列权限的用户可以创建一个泄漏运算符,该运算符可以读取从该列中采样的任何数据。如果这恰好包含用户被行安全策略禁止查看的行中的值,则用户可以有效地绕过该策略。此问题已通过仅当表的没有相关行安全策略时,才允许非防泄漏运算符使用此数据来修复。
此问题存在于 PostgreSQL 9.5、9.6、10 和 11 中。PostgreSQL 项目感谢 Dean Rasheed 报告此问题。
此更新还修复了在过去几个月内报告的 60 多个错误。其中一些问题仅影响 11 版本,但许多问题会影响所有受支持的版本。
其中一些修复包括
ALTER TABLE
相关的问题txid_status()
中可能出现的“无法访问事务状态”失败INSERT .. VALUES
语句中显式的 DEFAULT 项,其中有多个 VALUES 行CREATE TABLE IF NOT EXISTS .. AS EXECUTE ..
语句的缺失支持lc_time
设置的处理,该设置暗示的编码与数据库的编码不同current_logfiles
文件,使其具有与服务器 data
目录中其他文件相同的权限pg_verify_checksums
验证它指向的数据目录是否为正确的 PostgreSQL 版本contrib/postgres_fdw
的多个修复,包括一个用于远程分区的问题,其中 UPDATE 可能导致不正确的结果或崩溃此更新还包含 2019a 版本的 tzdata,其中包含巴勒斯坦和梅特拉卡特拉的 DST 法律变更,以及以色列的历史修正。Etc/UCT 现在是 Etc/UTC 的向后兼容链接,而不是生成缩写 UCT 的单独区域,而如今这通常是拼写错误。PostgreSQL 仍然接受 UCT 作为输入区域缩写,但不会输出它。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade
即可应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;有关详细信息,请参阅早期版本的发行说明。
PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复。有关更多信息,请参阅我们的版本控制策略。