安華金和全面適配國產(chǎn)化操作系統(tǒng)及芯片CPU
數(shù)據(jù)安全治理關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫脫敏技術(shù)詳解
數(shù)據(jù)安全治理之API監(jiān)測系統(tǒng) ,解決API接口安全問題【安華金和】
新一代數(shù)據(jù)庫脫敏技術(shù),為敏感數(shù)據(jù)建立保護(hù)盾!
數(shù)據(jù)庫脫敏系統(tǒng)與金融行業(yè)案例解讀
數(shù)據(jù)安全治理建設(shè)思路的著力點(diǎn)——數(shù)據(jù)安全咨詢服務(wù)【安華金和】
數(shù)據(jù)庫防火墻功能有哪些?-數(shù)據(jù)安全-安華金和
數(shù)據(jù)安全關(guān)鍵技術(shù)之?dāng)?shù)據(jù)庫脫敏技術(shù)詳解【安華金和】
中國數(shù)據(jù)安全治理落地指導(dǎo)書籍《數(shù)據(jù)安全治理白皮書5.0》正式發(fā)布(附下載)
近期白帽黑客達(dá)吾德·古倫斯基連續(xù)發(fā)布了三個(gè)Mysql的安全漏洞——CVE-2016-6662、CVE-2016-6663、CVE-2016-6664,導(dǎo)致Mysql和Mysql的分支MariaDB、Percona Server、Percona XtraDB Cluster主流版本紛紛中招。這三個(gè)安全漏洞單看起來危害程度一般,不過一旦組合使用則威力大增,就算擁有的是操作系統(tǒng)低權(quán)限用戶、數(shù)據(jù)庫低權(quán)限用戶的雙低身份,也可以通過組合利用漏洞獲取數(shù)據(jù)庫服務(wù)器的全部控制權(quán)。
比如,CVE-2016-6663和CVE-2016-6664的組合利用,可以逐步獲得數(shù)據(jù)庫服務(wù)器的root權(quán)限;CVE-2016-6662和CVE-2016-6663的組合利用,同樣可在低權(quán)限情況下獲得root權(quán)限
如果我們想通過CVE-2016-6662、CVE-2016-6663這兩個(gè)漏洞的組合獲取數(shù)據(jù)庫服務(wù)器的控制權(quán)限,我們需要對(duì)這兩個(gè)漏洞的目標(biāo)稍加分解:CVE-2016-6662的目標(biāo)是通過Mysql權(quán)限拿到rootshell,CVE-2016-6663的目標(biāo)是通過低權(quán)限用戶拿下Mysqlshell。
若想通過CVE-2016-6662拿到rootshell,需要滿足兩點(diǎn):1. Mysql權(quán)限下允許對(duì)my.cnf文件進(jìn)行寫操作。2.my.cnf的寫入內(nèi)容需要追加在后面。不考慮用戶設(shè)置的權(quán)限發(fā)生錯(cuò)誤這種情況,雖然my.cnf文件有多個(gè),但基本都需要在root權(quán)限下方可允許進(jìn)行讀寫操作,Mysql權(quán)限下都無法改寫my.cnf,唯一的特例是data目錄下的my.cnf(盡管目前很多版本已經(jīng)沒有這個(gè)文件了,但Mysql啟動(dòng)的時(shí)候還是會(huì)加載)。這一my.cnf的讀寫權(quán)限是Mysql,且加載順序靠后,里面的配置內(nèi)容不會(huì)被輕易沖掉。
那么,如何在data目錄下創(chuàng)建屬于Mysql權(quán)限的惡意my.cnf文件呢?方式有兩種:
1.通過SELECT '惡意配置內(nèi)容' INTO OUTFILE '/var/lib/mysql/my.cnf' 這種形式創(chuàng)建my.cnf。創(chuàng)建后my.cnf權(quán)限為666,但是Mysql一旦檢測到666權(quán)限則不會(huì)在啟動(dòng)中加載my.dnf文件。只有將my.cnf權(quán)限改造為660,才能完成啟動(dòng)中的文件加載。
2.采用改寫log日志的方式追加
mysql> set global general_log_file = '/var/lib/mysql/my.cnf';
mysql> set global general_log = on;
mysql> select '
'>
'> ; injected config entry
'>
'> [mysqld]
'> malloc_lib=/var/lib/mysql/mysql_hookandroot_lib.so
'>
'> [separator]
'>
'> ';
1 row in set (0.00 sec)
mysql> set global general_log = off;
這種方式可以直接解決上述方式中的666權(quán)限問題,但同時(shí)也帶來了一個(gè)新問題,即該漏洞需要Mysql的root權(quán)限,否則無權(quán)限執(zhí)行set global general_log等對(duì)全局日志操作的語句。
由此可見,cve-2016-6662漏洞雖然可以獲取root權(quán)限,但因?yàn)槠淇捎梅秶?、限制太多,所以給大家一種很雞肋的感覺。
但cve-2016-6662一旦與CVE-2016-6663結(jié)合發(fā)力,則會(huì)煥發(fā)全部能量。Cve-2016-6663扮演了一個(gè)松綁者的角色,可以幫助CVE-2016-6662解除諸多限制。Mysql在修表過程中,因?yàn)橄到y(tǒng)調(diào)用過程中未對(duì)賦值文件或目錄權(quán)限做全面檢查,導(dǎo)致低權(quán)限用戶控制了Mysqlshell,Cve-2016-6663正好可利用這一點(diǎn),讓黑客有機(jī)可乘,黑客僅需要有一組低權(quán)限操作系統(tǒng)賬號(hào)和一組可以創(chuàng)建表的低權(quán)限數(shù)據(jù)庫賬號(hào)即可。具體做法是:利用系統(tǒng)低權(quán)限賬號(hào)創(chuàng)建一個(gè)文件目錄,把該目錄指定為數(shù)據(jù)庫文件存儲(chǔ)的目錄,然后給這組目錄賦予低權(quán)限賬號(hào)的777權(quán)限,例如:
attacker@debian:~$ mkdir /tmp/disktable
attacker@debian:~$ chmod 777 /tmp/disktable/
接下來,低權(quán)限數(shù)據(jù)庫用戶創(chuàng)建表并修復(fù)表。
創(chuàng)建指定數(shù)據(jù)庫文件置于剛才的文件夾下:
CREATE TABLE poctab1 (txt varchar(50)) engine = 'MyISAM' data directory '/tmp/disktable';
修復(fù)剛創(chuàng)建的表系統(tǒng),會(huì)在不檢查poctab1.MYD表文件權(quán)限的情況下,直接調(diào)用復(fù)制在創(chuàng)建repaired表時(shí)的臨時(shí)文件chmod()權(quán)限。在repaired的過程中系統(tǒng)調(diào)用進(jìn)程 lstat("/tmp/disktable/poctab1.MYD", {st_mode=S_IFREG|0660,st_size=0, ...}) = 0和chmod("/tmp/disktable/poctab1.TMD", 0660) = 0之間產(chǎn)生了條件競爭漏洞。此時(shí)攻擊者只要?jiǎng)h除臨時(shí)表poctab1.TMD,然后通過符號(hào)鏈接在chmod()操作前替換/var/lib/mysql,就能夠完全控制Mysql的data目錄權(quán)限。但此時(shí)拿到的只能是mysqlshell,而非mysql用戶。接下來,通過chmod漏洞復(fù)制一份bash shell用以執(zhí)行命令。此時(shí)shell的權(quán)限是mysql權(quán)限,也就是說至此低權(quán)限用戶可以使用Mysql權(quán)限執(zhí)行命令。此時(shí)執(zhí)行CVE-2016-6662需要的mysql命令,則可以完成由mysqlshell向rootshell的提權(quán)。
CVE-2016-6663和CVE-2016-6662打出的這套組合拳使得低權(quán)限用戶獲得操作系統(tǒng)全部控制權(quán)成為可能。
針對(duì)此次CVE-2016-6662、CVE-2016-6663、CVE-2016-6664的安全威脅,安華金和從專業(yè)角度提出了安全防護(hù)建議,很顯然防范本次mysql漏洞組合拳攻擊的最佳方案就是用戶能第一時(shí)間對(duì)可能存在問題的數(shù)據(jù)庫打補(bǔ)丁,但是鑒于生產(chǎn)系統(tǒng)以及場景的復(fù)雜多樣性,對(duì)數(shù)據(jù)庫進(jìn)行及時(shí)的補(bǔ)丁修正并非易事,所以,可以嘗試使用數(shù)據(jù)庫防火墻來保護(hù)數(shù)據(jù)庫。
大部分?jǐn)?shù)據(jù)庫防火墻擅長做sql語句級(jí)的安全防護(hù)工作,不過,這三個(gè)漏洞主要利用的是數(shù)據(jù)庫文件的某些漏洞,所以大多數(shù)數(shù)據(jù)庫防火墻無法有效應(yīng)對(duì)這種情況。而安華金和的數(shù)據(jù)庫防火墻因?yàn)榫邆淞藬?shù)據(jù)庫外聯(lián)防護(hù)功能,因此可以有效阻止這類漏洞所帶來的風(fēng)險(xiǎn)。當(dāng)黑客入侵后,拿到的只是操作系統(tǒng)的rootshell,而并非root賬號(hào),盡管黑客采用shell反射技術(shù)讓數(shù)據(jù)庫服務(wù)器的rootshell主動(dòng)向自己的機(jī)器發(fā)起請求,但防火墻的數(shù)據(jù)庫外聯(lián)防護(hù)功能可以及時(shí)阻斷異常tcp鏈接,阻止黑客遠(yuǎn)程獲得數(shù)據(jù)庫服務(wù)器的rootshell。
安華金和數(shù)據(jù)庫防火墻的工作模式為:首先捕獲數(shù)據(jù)庫服務(wù)器向外發(fā)送的TCP鏈接,然后通過判斷特征值和特定算法,對(duì)不符合預(yù)期的TCP鏈接確認(rèn)后,直接給數(shù)據(jù)庫服務(wù)器返回拒絕服務(wù),阻止該次shell的反射,防止黑客盜取或偷窺數(shù)據(jù)庫服務(wù)器上的敏感信息。同時(shí)數(shù)據(jù)庫防火墻會(huì)通過短信、郵件等方式向主管人員提交此次攻擊的行為特征、入侵者特征以及安全分析報(bào)告等信息。