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() 在热备(hot standby)模式下执行时报告正确的 epochSELECT 的处理UNION ALL 子查询的规划pg_attribute 非常大时,修复缓慢的会话启动问题COPY FROM 以正确处理与无效编码对应的 null 标记字符串RETURNING 子句的可写 CTE(writable CTEs)的 EXPLAIN VERBOSEPREPARE TRANSACTION 在存在咨询锁(advisory locks)时能正常工作SIGHUP 信号后能重新启动文件轮转与其他次要版本发布一样,用户无需转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。数据库重启后执行更新后的步骤。如果您使用 citext 数据类型,并通过运行 pg_upgrade 从之前的较主版本升级,请参阅 9.1.4 的发布说明以了解重要的升级后步骤。
本次更新包含两个安全修复,针对以下问题:
crypt() 函数中不正确的密码转换此漏洞影响使用可选 pgcrypto 模块中的 crypt(text, text) 函数、DES 加密以及非 ASCII 密码的 PostgreSQL 用户。受影响的密码是指包含字节值 0x80 的密码。该字节之后的所有字符都会被忽略,导致有效密码比应有的更短,更容易被破解。升级后,任何包含此类字节的密码都需要重新生成。
SECURITY DEFINER 和 SET 属性将这些属性应用于调用处理程序可能会导致服务器崩溃。
所有受支持的 PostgreSQL 版本均受此影响。请参阅每个版本的发布说明,以获取完整的更改列表,其中包含修复的详细信息和步骤。
立即在主 下载页面 下载新版本。