PostgreSQL 全球开发组发布了所有受支持的 PostgreSQL 版本更新,包括 14.5、13.8、12.12、11.17 和 10.22,以及 PostgreSQL 15 的第三个 Beta 版本。此次发布修复了一个安全漏洞,并解决了过去三个月报告的 40 多个 bug。
有关更改的完整列表,请参阅 发行说明。
PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中使用 PostgreSQL 10,我们强烈建议您计划升级到更新的、受支持的 PostgreSQL 版本,以便继续接收 bug 和安全修复。有关更多信息,请参阅我们的版本策略。
受影响的版本:10 - 14。安全团队通常不测试不受支持的版本,但这个问题已经存在很久了。
某些扩展使用 CREATE OR REPLACE 或 CREATE IF NOT EXISTS 命令。然而,一些扩展不遵守关于只针对已知属于扩展成员的对象的规定。要利用此漏洞,攻击者需要至少在一个模式中创建非临时对象的权限,能够诱骗或等待管理员在该模式中创建或更新受影响的扩展,并且能够诱骗或等待受害者使用在 CREATE OR REPLACE 或 CREATE IF NOT EXISTS 中针对的对象。
在满足所有这三个先决条件的情况下,攻击者可以以受害者角色(可能是超级用户)的身份运行任意代码。已知受影响的扩展包括 PostgreSQL 自带的和非自带的扩展。PostgreSQL 在核心服务器中阻止了这种攻击,因此无需修改单个扩展。
PostgreSQL 项目感谢 Sven Klemm 报告此问题。
此次发布是 PostgreSQL 15 的第三个 Beta 版本,使社区更接近于在预计的第三季度末通用可用。
秉承开源 PostgreSQL 社区的精神,我们强烈鼓励您在自己的系统上测试 PostgreSQL 15 的新功能,以帮助我们消除可能存在的 bug 或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 15 Beta 3,但我们鼓励您尝试将典型的应用程序工作负载运行在此 Beta 版本上。
您的测试和反馈将帮助社区确保 PostgreSQL 15 保持我们提供稳定、可靠的世界领先的开源关系型数据库的标准。请阅读更多关于我们的Beta 测试流程以及您如何贡献。
https://postgresql.ac.cn/developer/beta/
您可以在发行说明中找到有关所有 PostgreSQL 15 功能和更改的信息。
https://postgresql.ac.cn/docs/15/release-15.html
此次更新修复了过去几个月报告的 40 多个 bug。以下列出的问题会影响 PostgreSQL 14。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
包含在此发布版本中
CREATE DATABASE 的预写日志 (WAL) 记录,当遇到丢失的 表空间目录时。CREATE INDEX 中的权限检查,以使用用户的权限。这修复了依赖于 CVE-2022-1552 修复之前行为的损坏的 dump/restore 场景。CREATE DATABASE 和其他不能在事务块中运行的命令之后立即提交。array 变量上有 MCV 类型扩展统计信息时,避免在常量 = ANY(array) 子句导致规划器崩溃。ANALYZE。ALTER TABLE ... ENABLE/DISABLE TRIGGER 以处理分区表上触发器的递归。ROW() 表达式和 FROM 中的函数。SPI_commit() 中的提交时错误后进行清理,而不是期望调用者执行此操作。这包括修复 PL/Python 中相同的场景,PL/Python 在 Python 3.11 上报告了崩溃,在旧版本 Python 3 上报告了内存泄漏。libpq 对空闲状态的处理。psql 的 \watch 命令中,在按 Control-C 取消后回显换行符。pg_upgrade 以检测接受 anyarray 参数的函数的不可升级用法。postgres_fdw 进行多项修复,包括在存在 WITH CHECK OPTION 约束时防止批量插入。有关所有更改的完整列表,请参阅 发布说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
有关更多详细信息,请参阅 发行说明。
要从 Beta 2、Beta 1 或更早版本的 PostgreSQL 升级到 PostgreSQL 15 Beta 3,您需要使用类似于升级 PostgreSQL 主版本之间的策略(例如,pg_upgrade 或 pg_dump / pg_restore)。有关更多信息,请访问有关升级的文档部分。
每个 PostgreSQL 版本的稳定性很大程度上取决于您,社区,通过您的工作负载和测试工具来测试即将发布的版本,以便在 PostgreSQL 15 正式发布之前发现 bug 和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 仍可能发生更改。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量决定了我们何时可以进行最终发布。
公开的未完成事项列表可以在 PostgreSQL Wiki 中找到。您可以使用 PostgreSQL 网站上的此表单报告 bug。
https://postgresql.ac.cn/account/submitbug/