上月末,一位名叫Dawid Golunski的波蘭黑客發現了MySQL中存在的兩個關鍵漏洞:遠程root代碼執行漏洞和權限升級漏洞。MySQL,MariaDB和Percona Server的管理員需要檢查其數據庫版本了,因為攻擊者可以通過鏈接這兩個關鍵漏洞,完全接管數據庫服務器。
根據Dawid Golunski的觀點,這兩個關鍵漏洞可以導致任意代碼執行,root權限升級和服務器損壞影響MySQL和其衍生版本,如Percona Server,Percona XtraDB Cluster和MariaDB。管理員應盡快安裝更新,以免無法進行修復,臨時解決方案是在數據庫服務器配置中禁用符號鏈接支持,在my.cnf中設置symbolic-links = 0。
競爭條件缺陷
第一個漏洞,特權升級/競爭條件缺陷(CVE-2016-6663),這為本地系統用戶訪問數據庫提供了特權,并允許用戶作為數據庫系統用戶執行任意代碼。它能夠讓一個低權限賬號(擁有CREATE/INSERT/SELECT權限)提升權限并且以系統用戶身份執行任意代碼。
本地系統用戶只需具有本地選擇,插入和創建特權即可利用此漏洞,這與由REPAIR TABLE SQL語句創建臨時文件的不安全操作相關。在基于MySQL的數據庫中,具有create特權的用戶可以指定新表存儲目錄的磁盤路徑。在表修復過程中,如果攻擊者設法取消鏈接臨時表,并在它被鎖定之前將其替換為系統目錄(/ var / lib / mysql)的符號鏈接,攻擊者將能應用任意權限目錄。例如,對臨時表設置權限,由于符號鏈接可以使數據目錄可讀寫。
此時,攻擊者可以訪問mysql shell并運行任意代碼。以特權系統用戶身份(mysql)運行mysql shell,攻擊者可以創建具有特定權限的另一個目錄,并在該路徑中創建表。
受影響的數據庫軟件版本包括MySQL 5.5.51及更早版本,5.6.32及更早版本以及5.7.14及更早版本; Percona Server 5.5.51-38.2及更早版本,5.6.32-78-1及更早版本以及5.7.14-8及更早版本; Percona XtraDB群集5.6.32-25.17及更早版本,5.7.14-26.17及更早版本,以及5.5.41-37.0及更早版本; 和MariaDB 5.5.52和更早版本,10.1.18和更早版本以及10.0.28和更早版本。
Root特權升級漏洞
特權升級/競爭條件缺陷可以與另一個關鍵漏洞(root特權升級漏洞(CVE-2016-6664))鏈接,導致這個問題的原因其實是因為MySQL對錯誤日志以及其他文件的處理不夠安全,這些文件可以被替換成任意的系統文件,從而被利用獲取root權限。大多數默認安裝的MySQL,Percona Server for MySQL和MariaDB的error.log文件存儲在/ var/ log/ mysql或/ var/ lib/ mysql中。
“兩個漏洞結合將有效允許低特權本地數據庫用戶升級系統特權到root帳戶,這增加了問題的嚴重性,”Golunski寫道。
在共享環境中,屬于不同組織和應用程序的多個數據庫托管在同一服務器上,該組合允許攻擊者訪問系統,作為較低層用戶對機器可以實現完全控制。競爭條件缺陷可以與不同的特權升級漏洞(如9月份在MySQL中報告的漏洞)組合,以在服務器上獲得root權限。攻擊者可以利用常見的Web應用程序漏洞在服務器上找到立足點,并破壞服務器的工作方式。所有當前版本的MariaDB都將受到此缺陷的影響。
了解和應用更新
Oracle修復了MySQL中的漏洞,Percona修復了Server和XtaDB Cluster中的問題。 MySQL修復可能有點混亂,因為在Oracle的Critical Patch Tuesday中為這些漏洞分配了不同的CVE標識符。在上個月的Oracle CPU中,競爭條件缺陷被標識為CVE-2016-5616,而root權限升級漏洞被標識為CVE-2016-5617。Oracle CPU更新已具有最新的MySQL修補程序。
MariaDB修復了競爭條件漏洞,并將在以后的版本中關閉root權限升級漏洞。由于無法直接利用root權限升級漏洞,因此嚴重性低于競爭條件缺陷。雖然同樣需要修復,但需要另一個漏洞才能使數據庫可用,團隊可能需要一些時間來處理補丁。
服務器(尤其是生產數據庫)的更新應用不像在臺式機和筆記本電腦上下載和安裝更新一樣簡單。補丁必須徹底測試,管理員必須找出更新窗口,這將導致最少的中斷。這就是為什么許多漏洞在補丁發布后很長時間又會被攻擊,像這樣的漏洞可能會在共享環境中涉及其他數據庫和應用程序,需要一個積極的修補計劃,以避免日后被再次攻擊。