一些世界上最大的公司(例如Facebook、谷歌和Adobe)以及很多规模较小的企业都在使用Oracle公司的MySQL数据库服务器软件。它的性能、可靠性和易用性使其成为在LAMP(Linux、Apache、MySQL、Perl/PHP/Python)平台上构建的数千Web应用不可缺少的部分。鉴于其庞大的用户群,最近发现的几个MySQL零日漏洞利用引起IT安全团队的高度关注,也激起了攻击者对MySQL安全的兴趣。
本文将讨论MySQL安全状况和这些MySQL零日漏洞威胁。我们还将为MySQL用户提供一些可行的缓解措施,和可能的MySQL替代方案。
MySQL零日漏洞概述
为了确定最近MySQL零日漏洞的严重程度,我们首先必须深入分析每个漏洞。这些漏洞已经被分配了以下公共漏洞和暴露(Common Vulnerabilities and Exposures CVE)ID:
? CVE-2012-5611 MySQL基于堆栈的缓冲区溢出:这是通过发送超长参数到GRANT FILE命令来触发的,该操作会导致堆栈缓冲区溢出。它将允许远程攻击者执行任意代码,甚至可能导致数据库崩溃。
? CVE-2012-5612 MySQL基于堆的溢出:低权限经验证的远程攻击者可以通过发送一系列特制的命令来导致堆缓冲区溢出。
? CVE-2012-5613 MySQL数据库权限提升:这并不被认为是一个安全漏洞,而是MySQL错误配置的结果,它可能导致远程认证用户获得管理员权限。
? CVE-2012-5614 MySQL拒绝服务(DoS):通过发送SELECT命令以及包含XML(有大量独特的嵌套元素)的UpdateXML命令,一个认证用户可导致拒绝服务。
? CVE-2012-5615 MySQL远程preauth用户枚举:远程攻击者可以基于MySQL生成的错误消息来发现有效的MySQL用户名。
乍一看,这个列表似乎指出了很多令人担忧的问题,包括DoS攻击、权限升级、身份验证绕过和代码执行。但其实CVE-2012-5615已经出现很长一段时间了,并记录在MySQL开发者手册中。此外,如果攻击者想要成功利用漏洞CVE-2012-5611(实际上是复制了较旧漏洞CVE-2012-5579)和CVE-2012-5614,他/她将需要有效的MySQL用户名和密码。而对于CVE-2012-5613,攻击者则需要有FILE权限(对服务器的读/写访问)的人的有效登录账号。这并不是一个漏洞,因为这种已知的服务器行为只能发生在错误配置的服务器。手册上说,最多只能向数据库管理员授予FILE权限。
因此,在实际情况中,只有CVE-2012-5612和5614需要引起真正的关注。通用漏洞评分系统(CVSS)是评估安全漏洞的标准方法,分数范围从0到10,0代表最不严重,10代表最严重。CVE-2012-5612的得分为6.5,CVE-2012-5614的得分为4.0,所以它们并不是最严重的漏洞。目前还没有报道有利用这些漏洞的攻击,但趋势科技已经发布了“深度包检测”(DPI)规则,并将这些漏洞涵盖在其防火墙规则中。
仍然担心MySQL安全?尝试替代方案
对于仍然担心潜在漏洞的MySQL用户,可以采取一些措施来进一步保护MySQL。首先,确保远程用户发到数据库的命令经验证后为有效和符合常理的。例如,SHOW FIELDS FROM命令应该被阻止,这种命令只可能来自恶意用户。同时,确认MySQL没有监听可从互联网访问的端口;理想情况下,限制对主机或子网上MySQL的访问。确认所有测试账户和不必要的权限已被删除,当新版本发布时,尽快升级MySQL,因为其中修复了这些漏洞。
在全面风险评估后,MySQL用户如果还觉得使用该产品的风险太大,可以考虑MariaDB,它是MySQL的二进制嵌入式替代品。它不仅功能与MySQL类似(它的开发者每个月与MySQL代码库混合,以确保兼容性),而且它经常先于MySQL打补丁。此外,它有MySQL中没有的很多选择、存储引擎和漏洞修复,虽然没有管理支持。
总结
也许这些MySQL零日漏洞可能没有想象的那么严重,但它们却提醒着我们,正确配置数据库软件及运行这些软件的操作系统是保持数据安全的重要因素。虽然MySQL很容易设置和使用,但企业应该多花些时间确保MySQL的安全配置,很多企业急于推出新的web应用而常常忽略了这个步骤。错误配置的服务器很容易受到攻击。对于所有MySQL用户,笔者建议阅读涉及安全问题的MySQL参考手册的第六章,特别是第6.1.3节《Making MySQL Secure Against Attackers》。你可以在MySQL网站找到关于MySQL漏洞的信息?