MySQL安全分析:緩解MySQL零日漏洞
一些世界上最大的公司(例如Facebook、谷歌和Adobe)以及很多規(guī)模較小的企業(yè)都在使用Oracle公司的MySQL數(shù)據(jù)庫服務(wù)器軟件。它的性能、可靠性和易用性使其成為在LAMP(Linux、Apache、MySQL、Perl/PHP/Python)平臺上構(gòu)建的數(shù)千Web應(yīng)用不可缺少的部分。鑒于其龐大的用戶群,最近發(fā)現(xiàn)的幾個MySQL零日漏洞利用引起IT安全團(tuán)隊(duì)的高度關(guān)注,也激起了攻擊者對MySQL安全的興趣。
本文將討論MySQL安全狀況和這些MySQL零日漏洞威脅。我們還將為MySQL用戶提供一些可行的緩解措施,和可能的MySQL替代方案。
MySQL零日漏洞概述
為了確定最近MySQL零日漏洞的嚴(yán)重程度,我們首先必須深入分析每個漏洞。這些漏洞已經(jīng)被分配了以下公共漏洞和暴露(Common Vulnerabilities and Exposures CVE)ID:
◆ CVE-2012-5611 MySQL基于堆棧的緩沖區(qū)溢出:這是通過發(fā)送超長參數(shù)到GRANT FILE命令來觸發(fā)的,該操作會導(dǎo)致堆棧緩沖區(qū)溢出。它將允許遠(yuǎn)程攻擊者執(zhí)行任意代碼,甚至可能導(dǎo)致數(shù)據(jù)庫崩潰。
◆ CVE-2012-5612 MySQL基于堆的溢出:低權(quán)限經(jīng)驗(yàn)證的遠(yuǎn)程攻擊者可以通過發(fā)送一系列特制的命令來導(dǎo)致堆緩沖區(qū)溢出。
◆ CVE-2012-5613 MySQL數(shù)據(jù)庫權(quán)限提升:這并不被認(rèn)為是一個安全漏洞,而是MySQL錯誤配置的結(jié)果,它可能導(dǎo)致遠(yuǎn)程認(rèn)證用戶獲得管理員權(quán)限。
◆ CVE-2012-5614 MySQL拒絕服務(wù)(DoS):通過發(fā)送SELECT命令以及包含XML(有大量獨(dú)特的嵌套元素)的UpdateXML命令,一個認(rèn)證用戶可導(dǎo)致拒絕服務(wù)。
◆ CVE-2012-5615 MySQL遠(yuǎn)程preauth用戶枚舉:遠(yuǎn)程攻擊者可以基于MySQL生成的錯誤消息來發(fā)現(xiàn)有效的MySQL用戶名。
乍一看,這個列表似乎指出了很多令人擔(dān)憂的問題,包括DoS攻擊、權(quán)限升級、身份驗(yàn)證繞過和代碼執(zhí)行。但其實(shí)CVE-2012-5615已經(jīng)出現(xiàn)很長一段時間了,并記錄在MySQL開發(fā)者手冊中。此外,如果攻擊者想要成功利用漏洞CVE-2012-5611(實(shí)際上是復(fù)制了較舊漏洞CVE-2012-5579)和CVE-2012-5614,他/她將需要有效的MySQL用戶名和密碼。而對于CVE-2012-5613,攻擊者則需要有FILE權(quán)限(對服務(wù)器的讀/寫訪問)的人的有效登錄賬號。這并不是一個漏洞,因?yàn)檫@種已知的服務(wù)器行為只能發(fā)生在錯誤配置的服務(wù)器。手冊上說,最多只能向數(shù)據(jù)庫管理員授予FILE權(quán)限。
因此,在實(shí)際情況中,只有CVE-2012-5612和5614需要引起真正的關(guān)注。通用漏洞評分系統(tǒng)(CVSS)是評估安全漏洞的標(biāo)準(zhǔn)方法,分?jǐn)?shù)范圍從0到10,0代表最不嚴(yán)重,10代表最嚴(yán)重。CVE-2012-5612的得分為6.5,CVE-2012-5614的得分為4.0,所以它們并不是最嚴(yán)重的漏洞。目前還沒有報(bào)道有利用這些漏洞的攻擊,但趨勢科技已經(jīng)發(fā)布了“深度包檢測”(DPI)規(guī)則,并將這些漏洞涵蓋在其防火墻規(guī)則中。
仍然擔(dān)心MySQL安全?嘗試替代方案
對于仍然擔(dān)心潛在漏洞的MySQL用戶,可以采取一些措施來進(jìn)一步保護(hù)MySQL。首先,確保遠(yuǎn)程用戶發(fā)到數(shù)據(jù)庫的命令經(jīng)驗(yàn)證后為有效和符合常理的。例如,SHOW FIELDS FROM命令應(yīng)該被阻止,這種命令只可能來自惡意用戶。同時,確認(rèn)MySQL沒有監(jiān)聽可從互聯(lián)網(wǎng)訪問的端口;理想情況下,限制對主機(jī)或子網(wǎng)上MySQL的訪問。確認(rèn)所有測試賬戶和不必要的權(quán)限已被刪除,當(dāng)新版本發(fā)布時,盡快升級MySQL,因?yàn)槠渲行迯?fù)了這些漏洞。
在全面風(fēng)險(xiǎn)評估后,MySQL用戶如果還覺得使用該產(chǎn)品的風(fēng)險(xiǎn)太大,可以考慮MariaDB,它是MySQL的二進(jìn)制嵌入式替代品。它不僅功能與MySQL類似(它的開發(fā)者每個月與MySQL代碼庫混合,以確保兼容性),而且它經(jīng)常先于MySQL打補(bǔ)丁。此外,它有MySQL中沒有的很多選擇、存儲引擎和漏洞修復(fù),雖然沒有管理支持。
總結(jié)
也許這些MySQL零日漏洞可能沒有想象的那么嚴(yán)重,但它們卻提醒著我們,正確配置數(shù)據(jù)庫軟件及運(yùn)行這些軟件的操作系統(tǒng)是保持?jǐn)?shù)據(jù)安全的重要因素。雖然MySQL很容易設(shè)置和使用,但企業(yè)應(yīng)該多花些時間確保MySQL的安全配置,很多企業(yè)急于推出新的web應(yīng)用而常常忽略了這個步驟。錯誤配置的服務(wù)器很容易受到攻擊。對于所有MySQL用戶,筆者建議閱讀涉及安全問題的MySQL參考手冊的第六章,特別是第6.1.3節(jié)《Making MySQL Secure Against Attackers》。你可以在MySQL網(wǎng)站找到關(guān)于MySQL漏洞的信息。