PostgreSQL 全球开发组今天发布了 PostgreSQL 数据库系统所有活跃分支的安全更新,包括 9.1.4、9.0.8、8.4.12 和 8.3.19 版本。
可选的 pgcrypto
模块中使用 DES 加密的 crypt(text, text)
函数的用户应立即升级其安装。 强烈建议所有其他数据库管理员在下次计划停机时升级您的 PostgreSQL 版本。 以下包含有关安全修复的更多详细信息。
此版本包含对 9.1 版本的 42 个修复,以及对较旧版本的少量修复,包括
citext
升级脚本中 citext
数组的排序规则以及 citext
上的域text
或 char
到 name
的转换,以便在多字节编码中正确执行字符串截断to_tsquery()
中的内存复制错误txid_current()
报告正确的纪元SELECTS
时,引用来自周围查询的外连接的可空侧的变量的问题UNION ALL
子查询的规划pg_attribute
非常大时会话启动缓慢的问题COPY FROM
以正确处理与无效编码相对应的空标记字符串RETURNING
子句的可写 CTE 的 EXPLAIN VERBOSE
PREPARE TRANSACTION
以便在存在咨询锁时正常工作SIGHUP
后将重新启动文件轮换与其他小版本一样,用户无需转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件。 数据库重新启动后执行更新后步骤。 如果您使用 citext
数据类型,并且您通过运行 pg_upgrade
从之前的重大版本升级,请参阅 9.1.4 的发行说明以了解重要的升级后步骤。
此更新包括以下两个安全问题的修复
crypt()
函数中不正确的密码转换此漏洞会影响使用 DES 加密和非 ASCII 密码的 crypt(text, text)
函数(在可选的 pgcrypto 模块中)的 PostgreSQL 用户。受影响的密码是那些包含字节值 0x80
的密码。此类字节之后的字符会被忽略,使得有效密码比应有的密码更短且更容易破解。 升级后,任何包含此类字节的密码都需要重新生成。
SECURITY DEFINER
和 SET
属性将此类属性应用于调用处理程序可能会导致服务器崩溃。
所有受支持的 PostgreSQL 版本都受到影响。 有关修复和步骤的详细信息,请参阅每个版本的发行说明以获取完整的更改列表。
立即从主下载页面下载新版本。