PostgreSQL 全球开发小组发布了 PostgreSQL 所有受支持版本的更新,包括 14.5、13.8、12.12、11.17 和 10.22,以及 PostgreSQL 15 的第三个 beta 版本。此版本修复了一个安全漏洞,并修复了过去三个月中报告的 40 多个错误。
有关更改的完整列表,请查看发行说明。
PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中运行 PostgreSQL 10,我们强烈建议您计划升级到更新的、受支持的 PostgreSQL 版本,以便您继续收到错误和安全修复。请参阅我们的版本控制策略以获取更多信息。
受影响的版本: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 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中运行 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 多个错误。下面列出的问题会影响 PostgreSQL 14。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
此版本包含
CREATE DATABASE
预写日志(WAL)记录的问题。CREATE INDEX
中的权限检查以使用用户的权限。这修复了依赖于修复CVE-2022-1552之前的行为的损坏的转储/恢复场景。CREATE DATABASE
和其他无法在事务块中运行的命令之后强制立即提交。array
变量上时,使用常量= ANY(array)
子句的规划器核心转储。ANALYZE
计算扩展统计信息时取消它。ALTER TABLE ... ENABLE/DISABLE TRIGGER
以处理分区表上的触发器的递归。FROM
中具有 1600 多列的ROW()
表达式和函数。SPI_commit()
中提交时错误后进行清理,而不是期望调用者这样做。这包括修复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 全面上市之前发现错误和回归。由于这是一个 beta 版本,因此数据库行为、功能细节和 API 的更改仍然是可能的。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。
在 PostgreSQL wiki 中公开提供了一个未解决问题的列表。您可以使用 PostgreSQL 网站上的此表单报告错误
https://postgresql.ac.cn/account/submitbug/