E.189. 版本 8.1.4
发布日期: 2006-05-23
这个版本包含各种自8.1.3以来的修复,包括对极其严重的安全问题的修补。 关于8.1主版本的新特性信息,请查看第 E.193 节。
E.189.1. 迁移到版本 8.1.4
运行8.1.X的用户不需要转储/恢复。不过,如果你是从一个早于8.1.2的版本升级而来, 那么请查看第 E.191 节。
针对CVE-2006-2313和CVE-2006-2314中描述的SQL注入攻击的完全安全可能需要在应用的代码中修改。
如果你有应用嵌入了不可信的字符串到SQL命令中,你应该尽快检测它们,
以确保它们使用推荐的转义技术。在大多数情况下,应用应该使用库或驱动
(比如libpq的PQescapeStringConn()
)
提供的子例程执行字符串转义,而不是依赖于ad hoc代码完成转义。
E.189.2. 修改列表
-
修改服务器以在所有情况下都拒绝无效编码的多字节字符 (Tatsuo, Tom)
虽然PostgreSQL已经朝这个方向发展了一段时间了, 但是检查现在才一致的应用到所有编码和所有文本输入中, 并且现在总是提示错误而不只是警告。这个修改防范了CVE-2006-2313 中描述的SQL注入类型的攻击。
-
拒绝在字符串文本中不安全的使用\'
作为服务器端防范CVE-2006-2314中描述的SQL注入类型的攻击, 服务器现在只接受''而不是\' 作为SQL字符串字面值中ASCII单引号的表示。缺省的, 只在client_encoding设置为仅客户端的编码 (SJIS、BIG5、GBK、GB18030或UHC)时拒绝\', 这也是SQL注入有可能发生的情节。一个新的配置参数backslash_quote 可用于在需要时调整这个行为。请注意,针对CVE-2006-2314 的完全安全可能需要客户端侧的修改;但是backslash_quote 的目的是在一定程度上让不安全的客户端明显。
-
修改libpq的字符串转义例程,意识到编码注意问题和 standard_conforming_strings
这为CVE-2006-2313和CVE-2006-2314中描述的安全问题修复了使用libpq 的应用,并且也提前防范了规划的到SQL标准字符串文本语法的转换。 同时使用多个PostgreSQL连接的应用应该迁移到
PQescapeStringConn()
和PQescapeByteaConn()
, 以确保为每个数据库连接中使用的设置做了正确的转义。 "手动"做字符串转义的应用应该修改为依赖于库例程。 -
修复pgcrypto中的弱键选择 (Marko Kreen)
fortuna PRNG重播逻辑中的错误会导致一个可预知的会话秘钥在某些情况下被
pgp_sym_encrypt()
选择。这只影响没有使用OpenSSL的构造。 -
修复一些不正确的编码转换函数
win1251_to_iso
、win866_to_iso
、euc_tw_to_big5
、euc_tw_to_mic
、mic_to_euc_tw
都在变化范围上有损坏。 清理字符串中剩下的\'的使用 (Bruce, Jan)
让自动清理在pg_stat_activity中可见 (Alvaro)
-
禁用full_page_writes (Tom)
在某些情况下,让full_page_writes关闭会导致崩溃恢复失败。 一个适当的修复将在8.2中出现;现在只是将它禁用了。
各种规划器修复,尤其是位图索引扫描和MIN/MAX最优化 (Tom)
-
修复合并连接中不正确的最优化 (Tom)
外连接有时会发出多次未匹配行的拷贝。
修复在相同的事务中使用和修改plpgsql函数的崩溃
修复B-Tree索引被截断情况下的WAL重放
为包含|的模式修复SIMILAR TO (Tom)
修复SELECT INTO和CREATE TABLE AS, 以在缺省表空间中创建表,而不是在基础目录中 (Kris Jurka)
修复服务器,以正确的使用自定义DH SSL参数 (Michael Fuhr)
-
改善快速排序性能 (Dann Corbit)
目前这个代码只在Solaris上使用了。
修复x86系统上的OS/X Bonjour (Ashley Clark)
修复各种小的内存泄露
修复密码提示在某些Win32系统上的问题 (Robert Kinberg)
改善pg_dump对域的缺省值的处理
-
修复pg_dumpall以合理的处理命名相同的用户和组 (只在从早于8.1的服务器上转储时是可能的) (Tom)
用户和组将带有LOGIN权限被合并到一个角色中。 以前合并的角色不会有LOGIN权限,使其不能用作一个用户。
修复pg_restore -n,以作为记录工作 (Tom)