20130404ActualizacionSeguridad
PostgreSQL:2013 年 4 月 4 日安全更新
FYI(英文公告和常见问题解答的非官方西班牙语翻译)
常见问题解答
此更新包含以下版本
- v9.2.4
- v9.1.9
- v9.0.13
- v8.4.17
这些问题集中在漏洞 CVE-2013-1899 上。
是否存在已知并发布的针对此漏洞的攻击代码?
在发布此更新时,没有已知的攻击代码。
哪些用户特别容易受到此事件的影响?
任何允许无限制访问 PostgreSQL 网络端口(通常为 5432)的系统,例如在公共云上运行的用户,特别容易受到攻击。那些仅在受保护的内部网络中可访问、拥有有效防火墙或其他网络限制的服务器则不太容易受到攻击。
这是一个有关数据库安全性的普遍原则:除非绝对必要,否则不要允许从不可信的网络访问服务器端口。这对于 PostgreSQL 以及其他数据库系统而言都是如此,甚至更为重要。
此漏洞的本质是什么?
此漏洞允许在 PostgreSQL 正在运行多用户正常模式时,使用一个为单用户恢复模式设计的 PostgreSQL 连接命令行参数。这可能会被用来损害服务器。
此漏洞可能导致哪些安全漏洞?
- 持久性拒绝服务攻击:未经身份验证的攻击者可以使用此漏洞导致错误消息被添加到服务器数据目录中的特定文件中。这种方式损坏的文件可能会导致服务器崩溃并拒绝重新启动。可以通过编辑文件并删除垃圾文本或从备份中恢复服务器来修复服务器。
- 配置权限提升:如果攻击者拥有对数据库服务器的合法登录权限,并且服务器配置为用户和数据库名称相同(例如,用户 `web`,数据库 `web`),那么此漏洞可被用来暂时设置具有超级用户权限的配置变量。
- 任意代码执行:如果攻击者满足第 2 点中的所有条件,并且能够保存文件(即使在临时目录中),那么他可以使用此漏洞在 C 中加载和执行任意代码。SELinux 会阻止这种类型的特定攻击。
哪些主要版本的 PostgreSQL 受影响?
版本 9.0、9.1 和 9.2。
8.4 版本的用户不受影响。8.3 或更早版本的用户的系统也不受此事件的影响,但他们仍然容易受到其他未修复的漏洞的攻击,因为这些版本已超出其生命周期。
用户如何保护自己?
- 尽快下载更新并更新所有服务器。
- 确保 PostgreSQL 不接受来自不可信网络的连接。
- 审计数据库用户以确保他们具有适当的访问凭据,并且只有合法且活跃的用户存在。
- 使用高级安全框架,例如带有 PostgreSQL SEPostgres 扩展的 SELinux,也有助于消除 PostgreSQL 安全漏洞带来的潜在损害风险。
何时发现此漏洞?
此漏洞于 2013 年 3 月 12 日报告给 PostgreSQL 全球开发组。
谁发现了此漏洞?
NTT 开源软件中心的近藤光政和堀口京太郎在进行安全审计时发现了此漏洞。NTT(日本电报电话公司)是 PostgreSQL 的长期贡献者。
此漏洞是如何报告的?
近藤先生和堀口先生向 [email protected] 发送了一封电子邮件。
PostgreSQL 项目是如何组织的?
PostgreSQL 全球开发组 (PGDG) 是一个志愿者组织。我们有一个由六人组成的核心团队、更多的主要贡献者以及一些邮件列表,共同构成了社区的中心部分。查看贡献者列表:https://postgresql.ac.cn/community/contributors/
PostgreSQL 多久会发现一次安全漏洞?
我们每年会发现 0 到 7 个小问题。这是自 2006 年“反斜杠转义编码问题”以来发生的第一个重大事件,该问题也影响了 MySQL 和其他数据库系统。
此漏洞是如何引入的?
它是为了使连接建立更快、代码更易于维护而进行的重构工作带来的副作用。
谁发现 PostgreSQL 中的漏洞?
我们很幸运拥有一大群安全工程师定期测试 PostgreSQL,并负责任地报告安全事件以便解决。这包括
- NTT Open Source、EnterpriseDB 和 2ndQuadrant 等合作公司的 QA 员工
- 日本国家信息安全局的安全研究人员
- Secunia 等安全公司中的安全研究人员
- Coverity 的扫描项目
- 以及我们庞大的参与社区的用户群,他们也会报告错误。
此更新中还包含哪些内容?
此版本还更新了安全页面和发布公告中详细说明的另外四个较小的安全问题。它还包括一些修正,主要用于解决两个可能导致二进制复制出现数据损坏的事件。
完整公告
PostgreSQL 全球开发组已发布了针对所有当前版本的 PostgreSQL 数据库系统的安全更新,包括版本 9.2.4、9.1.9、9.0.13 和 8.4.17。此更新修复了 9.0 及更高版本中一个高风险的安全漏洞。建议所有受影响版本的用户“立即”应用此更新。
此版本修复了一个主要安全事件 CVE-2013-1899 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1899),其中包含以“-”开头的数据库名称的恶意构造的连接请求可能会损坏服务器数据目录中的文件。任何能够访问 PostgreSQL 服务器监听端口的用户都可以发起此请求。NTT 开源软件中心的近藤光政和堀口京太郎发现了此事件。
此版本还包含两个较小的安全事件:CVE-2013-1900 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1900),其中 contrib/pgcrypto 函数生成的随机数很容易被其他用户猜到;以及 CVE-2013-1901 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1901),它错误地允许无权限用户执行可能会干扰正在进行的备份的命令。最后,此版本还修复了 Linux 和 Mac OS X 图形安装程序中的两个安全事件:“将超级用户密码不安全地传递给脚本”,CVE-2013-1903 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1903) 和“/tmp 中的可预测文件名”,CVE-2013-1902 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-1902)。Marko Kreen、Noah Misch 和 Stefan Kaltenbrunner 分别报告了这些事件。
我们感谢这些开发人员的努力,他们让 PostgreSQL 更加安全。
此版本还修复了 GiST 索引处理中的几个错误。安装此更新后,建议对满足以下一个或多个条件的 GiST 索引执行 REINDEX 操作。
此更新还包含针对过去两个月 PostgreSQL 社区发现和修复的许多其他较小问题的修复,包括
- 修复 GiST 索引,使其不再对 box、polygon、circle 和 point 列使用“模糊”几何比较
- 修复 contrib/btree_gist 中针对 text、bytea、bit 和 numeric 列的 GiST 索引存在的问题
- 修复多列 GiST 索引的页面分割代码中存在的问题
- 修复 WAL 重放中的缓冲区溢出问题,导致出现“不正确的本地引脚计数”错误
- 在进入存档恢复之前,在存在 recovery.conf 的情况下,在非干净关闭期间确保故障恢复
- 防止在故障恢复期间删除未归档的 WAL 文件
- 修复 DELETE RETURNING 中的竞争条件
- 修复在将列添加到依赖于其他视图的视图后可能导致计划程序崩溃的问题
- 消除 PL/Perl's spi_prepare() 中的内存泄漏
- 修复 pg_dumpall 以处理包含“=”的数据库名称
- 防止 pg_dump 在提供错误的连接字符串时崩溃
- 忽略 pg_dump 和 pg_upgrade 中的无效索引
- 在使用 pg_basebackup 备份表空间时,只包含当前版本的子目录
- 在 pg_basebackup 和 pg_receivexlog 中添加版本检查
- 修复 contrib/dblink 以安全地处理不一致的 DateStyle 或 IntervalStyle 设置
- 修复 contrib/pg_trgm 的 similarity() 以对不包含三元组的字符串返回 0
- 启用使用 Microsoft Visual Studio 2012 构建 PostgreSQL
- 更新时区文件以反映智利、海地、摩洛哥、巴拉圭和俄罗斯部分地区的 DST 法律变化
与往常一样,更新只需要安装软件包并重新启动数据库系统。不需要进行转储/恢复或使用 pg_upgrade 进行此更新。已跳过多个更新的用户可能需要在更新后执行额外的步骤。请参阅发行说明以获取详细信息。
链接