PostgreSQL 全球开发组今天发布了 PostgreSQL 对象关系数据库系统所有活跃分支的安全更新,包括版本9.1.3、9.0.7、8.4.11 和 8.3.18。
使用 pg_dump 的用户、使用 SSL 证书进行验证的用户或使用 SECURITY DEFINER 的触发器的用户应立即升级其安装。所有其他数据库管理员都应在下次计划停机时升级其 PostgreSQL 版本。以下是有关安全修复的更多详细信息。
此更新中受错误修复影响的功能包括:二进制复制和热备、GIN、WITH、外部数据包装器、PL/pgsql、PL/python、inet 数据类型、intarray、pgcrypto、pg_upgrade、pg_restore 和 pg_dump。这些功能的用户应尽快应用更新。
此版本包含对 9.1 版本的 45 个修复,以及对较旧版本的较少数量的修复,包括
与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件。在数据库重新启动后执行更新后步骤。
此更新包括以下三个安全修复程序,用于解决以下问题
此修复程序阻止用户定义执行用户没有 EXECUTE 权限的函数的触发器。
CREATE TRIGGER 未对要调用的触发函数进行任何权限检查。没有特权的数据库用户可以将触发函数附加到他们拥有的表上,并使其在其选择的数据上调用。通常,这将以表所有者的权限执行,因此不会提供额外的功能。但是,如果触发函数被标记为 SECURITY DEFINER,则可能会发生权限提升。
此修复程序修复了 SSL 通用名称截断的问题,这在特殊情况下可能允许劫持 SSL 连接。
当使用 SSL 证书时,客户端和服务器都可以配置为根据其提供的证书中的通用名称验证另一方的主机名。但是,从证书中提取的名称被错误地截断为 32 个字符。通常,这只会导致验证失败,但如果机器的实际主机名正好是 32 个字符长,那么原则上可以被欺骗。这种情况实际发生的风险似乎很小,攻击者仍然需要采取 PostgreSQL 之外的其他步骤才能成功利用漏洞。
此修复程序从转储文件注释中删除了 '\n' 和 '\r'。
pg_dump 将对象名称复制到 SQL 脚本的注释中,而没有对其进行清理。包含换行符后跟 SQL 命令的对象名称将导致转储脚本中 SQL 命令暴露以供执行。当且仅当转储脚本重新加载时,该命令将以运行该脚本的任何人的权限执行 - 通常是超级用户。
所有受支持的 PostgreSQL 版本都受影响。有关修复和步骤的详细信息,请参阅每个版本的发行说明。
立即下载新版本