E.131. 版本 7.3.21 #
发行日期
2008-01-07
此发行版包含 7.3.20 之后的多种修复,包括对重要安全问题的修复。
这预计是 PostgreSQL 7.3.X 系列的最后一个发行版。建议用户尽快更新到较新的发行分支。
E.131.1. 迁移到版本 7.3.21
对于运行 7.3.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 7.3.13 的版本升级,请参阅 7.3.13 的发布说明。
E.131.2. 变更
防止索引中的函数以运行
VACUUM、ANALYZE等的用户的权限执行(Tom)每当产生新的表条目时,都会求值索引表达式和部分索引谓词中使用的函数。人们早就明白,如果修改不可信用户拥有的表,这会带来特洛伊木马代码执行的风险。(注意触发器、默认值、检查约束等也构成同类风险。)但索引中的函数带来额外危险,因为它们会由例程维护操作(如
VACUUM FULL)执行,而这些操作通常在超级用户账户下自动执行。例如,恶意用户可以通过设置特洛伊木马索引定义并等待下一次例程清理来以超级用户权限执行代码。修复安排标准维护操作(包括VACUUM、ANALYZE、REINDEX和CLUSTER)以表所有者而非调用用户的身份执行,使用已用于SECURITY DEFINER函数的同一权限切换机制。为防止绕过此安全措施,现在禁止在SECURITY DEFINER上下文中执行SET SESSION AUTHORIZATION和SET ROLE。(CVE-2007-6600)作为安全措施,要求使用
/contrib/dblink的非超级用户只使用口令认证(Joe)7.3.20 中出现的修复并不完整,它只堵住了部分
dblink函数的漏洞。(CVE-2007-6601、CVE-2007-3278)修复使用多字节数据库编码时
translate()可能的崩溃(Tom)让
contrib/tablefunc的crosstab()把 NULL rowid 本身作为一个类别处理,而不是崩溃(Joe)要求在重新生成
configure脚本时使用特定版本的 Autoconf(Peter)这只影响开发者和打包者。此变更是为了防止意外使用未经测试的 Autoconf 与 PostgreSQL 版本组合。如果确实想使用不同的 Autoconf 版本,可以移除版本检查,但结果是否可用由你自己负责。