MySQL 和 MariaDB 的 SSL 连接漏洞信息
上周,报告了 MySQL 和 MariaDB 的一个 SSL 连接安全漏洞。该漏洞指出,由于 MariaDB 和 MySQL 在启用 SSL 支持时不会强制执行 SSL,因此可能发起中间人(MITM)攻击。MITM 攻击可以劫持安全连接并将其变成不安全的连接,从而暴露服务器之间来回传输的数据。
MariaDB 中的问题解决方案可在 MariaDB 跟踪系统 (JIRA) 中的相应工单中查看:https://mariadb.atlassian.net/browse/MDEV-7937
该漏洞影响 MariaDB 和 MySQL 数据库服务器的客户端库。但是,该漏洞不影响用于建立与服务器的 SSL 连接的所有库、驱动程序或连接器。
当通过客户端库 libmysqlclient 连接到服务器时,存在该漏洞。该客户端库随数据库服务器提供,并且是 MySQL 中相应客户端库的一个分支。该客户端库被可能是最常用的工具,即 MySQL 命令行工具所使用,MariaDB 附带了一个分支版本。
除了 libmysqlclient,MariaDB 项目还提供以下连接器
- MariaDB Connector/C,https://mariadb.com/kb/en/mariadb/mariadb-connector-c/
- MariaDB Connector/J (Java 客户端),https://mariadb.com/kb/en/mariadb/about-the-mariadb-java-client/
- MariaDB Connector/ODBC,https://mariadb.com/kb/en/mariadb/mariadb-connector-odbc/
这些连接器也支持与数据库服务器建立 SSL 连接,并使用类似的参数等来建立安全连接。以下是关于这些连接器是否受影响的最新情况
- 受影响 – MariaDB Connector/C 与 libmysqlclient 以相同方式易受攻击
- 不受影响 – MariaDB Connector/J 处理得当,如果在启用 SSL 时会中止所有不安全连接
- 不受影响 – MariaDB Connector/ODBC 当前不支持 SSL
对于 MySQL 的 Connector/J,值得一提的是它有两个属性,“useSSL” 和 “requireSSL”。如果选择了 “requireSSL”,则会中止不安全连接。
许多用于连接 MariaDB 或 MySQL 的工具都使用了 libmysqlclient。因此,在使用这些工具连接不受信任的网络时,强烈建议您尽可能通过常规手段限制网络访问,即使您使用 SSL 连接 MariaDB 或 MySQL。以下是一些易于实施的,可降低 MITM 攻击风险的最佳实践:
最后,由于我们正在修复 MariaDB 中的漏洞,我们很感谢您提供关于哪些 MariaDB 版本应回移植此修复的意见。背景信息是,MySQL(直到 5.7 版本)和 MariaDB 中的 SSL 支持是不可强制执行的。这是 MySQL 的预期行为,早在 2000 年就已实现,并在 MySQL 参考手册中明确记录为
“对于服务器,此选项指定服务器允许但不要求 SSL 连接。
对于客户端程序,此选项允许但不要求客户端使用 SSL 连接到服务器。因此,此选项本身不足以导致使用 SSL 连接。例如,如果您为客户端程序指定此选项,但服务器尚未配置为允许 SSL 连接,则会使用未加密的连接。”
MariaDB 5.5 和 10.0 是稳定版本,其行为如文档所述 – 它们允许 SSL,但不要求 SSL。强制执行 SSL,当给出适当的选项时,将改变行为,并且可能会破坏使用 SSL 和非 SSL 连接混合的现有应用程序。在 MariaDB 10.1 中,这不是问题,因为 MariaDB 10.1 仍处于 Beta 阶段,尽管已非常接近发布候选版本状态。我们将在那里引入修复。至于 MariaDB 5.5 和 10.0,我们正在收集意见,以确定是否应更改 5.5 和 10.0 的行为。请访问我们的网站了解更多详情,并通过以下链接分享您的反馈:http://info.mariadb.com/ssl-vulnerability-mysql-mariadb
有关该漏洞的初始报告可在以下来源找到
- oCERT 提供了一份包含更多漏洞信息的良好报告:http://www.ocert.org/advisories/ocert-2015-003.html
- 官方 CVE 报告: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-3152
评论已关闭。