很多人或許對上半年發(fā)生的安全問題“心臟流血”(Heartbleed Bug)事件記憶頗深,然而僅時隔幾個月,又出現(xiàn)了另外一個“毀滅級”的漏洞——Bash軟件安全漏洞。
誰是Bash漏洞的發(fā)現(xiàn)者?
據(jù)iThome網(wǎng)站報道,Bash漏洞是由法國GNU/Linux愛好者Stéphane Chazelas所發(fā)現(xiàn)。
隨后,美國電腦緊急應(yīng)變中心(US-CERT)、紅帽以及多家從事安全的公司于周三(北京時間9月24日)發(fā)出警告。
為什么說Bash安全漏洞是毀滅級的?
業(yè)內(nèi)人士都知道,Bash是Unix Shell的一種。雖然當(dāng)初的Bash編寫是為了GNU計劃而編寫,打算用在GNU操作系統(tǒng)上,但它能運行于大多數(shù)類Unix操作系統(tǒng)上,這包括Linux與Mac OS系統(tǒng)。
百度百科的介紹顯示,Bash(GNU Bourne-Again Shell)是大多數(shù)Linux系統(tǒng)以及Mac OS X v10.4默認(rèn)的shell,它能運行于大多數(shù)Unix風(fēng)格的操作系統(tǒng)之上,甚至被移植到了Microsoft Windows上的Cygwin系統(tǒng)中,以實現(xiàn)windows的POSIX虛擬接口。此外,它也被DJGPP項目移植到了MS-DOS上。
而Bash的命令語法是Bourne shell命令語法的超集。數(shù)量龐大的Bourne shell腳本大多不經(jīng)修改即可以在bash中執(zhí)行,只有那些引用了Bourne特殊變量或使用了Bourne的內(nèi)置命令的腳本才需要修改??梢哉f,Bash是類Unix系統(tǒng)的核心,如果Bash出現(xiàn)了漏洞,則說明攻擊者可以控制機器一切。
Bash漏洞現(xiàn)在帶來的影響?
據(jù)悉,這個Bash漏洞為遠(yuǎn)程解析命令執(zhí)行漏洞(CVE-2014-6271),可以直接在Bash支持的Web CGI環(huán)境下遠(yuǎn)程執(zhí)行任何命令。這也就使得一些路由器、堡壘機、VPN等網(wǎng)絡(luò)設(shè)備將會成為重災(zāi)區(qū),另外各大Linux發(fā)行版和Mac OS X系統(tǒng)都受影響,甚至Android也會受到影響。
據(jù)烏云漏洞報告平臺稱,這個漏洞對一般的網(wǎng)站影響并不大,但對那些受到影響的網(wǎng)站卻是很“兇殘”,因為之前聲稱所能使用的補丁,黑客可以輕松繞過。
烏云知識庫稱,目前Shellshock蠕蟲已經(jīng)開始傳播。從漏洞披露到蠕蟲病毒出現(xiàn),也就一天時間,時間間隔非常短,說明這或許真的是一場互聯(lián)網(wǎng)安全領(lǐng)域的“災(zāi)難”。
值得一提的是,目前負(fù)責(zé)維護(hù)Bash Shell的Chet Ramey已經(jīng)修補該漏洞,更新Bash 3.0至Bash 4.3的版本,可以運行:yum update -y bash進(jìn)行升級處理。不過新版本Bash是否完全解決了安全問題,目前仍不得而知。
是添油加醋還是真的很嚴(yán)重?
網(wǎng)絡(luò)安全公司Rapid7工程部經(jīng)理Tod Beardsley稱,Bash漏洞危險幾倍很高,但利用復(fù)雜度為“低”,只要剪切和粘貼一行代碼即可,意味著黑客可以很輕松地利用發(fā)起攻擊,這從一定程度上又加劇了互聯(lián)網(wǎng)安全災(zāi)難。另外,網(wǎng)絡(luò)安全公司Trail of Bits的CEO Dan Guido指出,不同于“heartbleed”漏洞,Bash漏洞能取得用戶電腦控制權(quán)。
據(jù)一位叫djvu9的微博用戶稱,目前已經(jīng)可以通過DHCP server來遠(yuǎn)程執(zhí)行代碼了,說不定拿個安卓手機去各種敏感場所,然后做個熱點再把SSID改成什么CMCC Free WiFi就行了。
然而一位叫meng_bo的微博用戶對這個漏洞有點不以為然,他在微博中稱:“整的跟多大事情似的,實際沒有多少應(yīng)用涉及這個事情,誰沒事做拿bash寫CGI呢? 也就git這類應(yīng)用受影響吧。”而用戶則指出,Redhat博客已經(jīng)說明,Git/SVN都有中招的可能。
知乎一名叫“Rix Tox”的用戶稱,不過就目前得到的信息來看,該漏洞雖然可以造成很嚴(yán)重的破壞,但不見得影響范圍就比Heartbleed要大。該漏洞主要影響的是CGI程序,通過注入HTTP字段讓Bash在初始化環(huán)境變量的時候執(zhí)行任意Bash命令。具體來說,感覺跟SQL注入有點類似,不過這個更加嚴(yán)重一點,因為直接有執(zhí)行系統(tǒng)命令的權(quán)限。
但據(jù)業(yè)內(nèi)人士稱,暫時無法估計這個安全漏洞影響究竟多大,就像當(dāng)時無法預(yù)估究竟有多少人在使用內(nèi)含Heartbleed漏洞的OpenSSL一樣。是的,有大量軟件以某種方式與Shell交互,所以根本沒有辦法列出受該漏洞影響的所有軟件。另外,由于該漏洞已經(jīng)在Linux中存在很長時間,所以修補某個Linux很容易,但是要全部修補,不太容易實現(xiàn)。
不管怎么說,只要出現(xiàn)漏洞,都應(yīng)得到重視。目前,國內(nèi)安全實驗室安天對漏洞帶來的影響進(jìn)行了總結(jié):
此漏洞可以繞過ForceCommand在sshd中的配置,從而執(zhí)行任意命令。
如果CGI腳本用bash或subshell編寫,則使用mod_cgi或mod_cgid的Apache服務(wù)器會受到影響。
DHCP客戶端調(diào)用shell腳本來配置系統(tǒng),可能存在允許任意命令執(zhí)行,尤其作為根命令的形式,在DHCP客戶端的機器上運行。
各種daemon和SUID/privileged的程序都可能執(zhí)行shell腳本,通過用戶設(shè)置或影響環(huán)境變數(shù)值,允許任意命令運行。
結(jié)束語
在曝光Bash漏洞后,有人開玩笑稱,Windows系統(tǒng)終于勝出了一局。其實,不論是Linux、Unix,還是Windows,計算機的安全永遠(yuǎn)都是相對的。就拿Bash漏洞來說,或許這個漏洞早已在地下傳播很久,最近才曝出來,只是因為有良心的人愿意披露出來而已……所以永遠(yuǎn)都沒有絕對安全的系統(tǒng),安全也只是暫時沒有曝光或沒發(fā)現(xiàn)漏洞而已。
不過好在這個漏洞終于曝光,得到了所有人關(guān)注,相信曝光的越徹底,修復(fù)也將會越徹底。
附錄:Bash漏洞的攻擊原理和檢測方法等
Bash漏洞的攻擊原理?
據(jù)Linuxidc網(wǎng)站介紹,GNU Bash 4.3及之前版本在評估某些構(gòu)造的環(huán)境變量時存在安全漏洞,向環(huán)境變量值內(nèi)的函數(shù)定義后添加多余的字符串會觸發(fā)此漏洞,攻擊者可利用此漏洞改變或繞過環(huán)境限制,以執(zhí)行shell命令。某些服務(wù)和應(yīng)用允許未經(jīng)身份驗證的遠(yuǎn)程攻擊者提供環(huán)境變量以利用此漏洞。此漏洞源于在調(diào)用Bash shell之前可以用構(gòu)造的值創(chuàng)建環(huán)境變量。這些變量可以包含代碼,在shell被調(diào)用后會被立即執(zhí)行。
這是屬于遠(yuǎn)程任意代碼執(zhí)行的安全漏洞,所以可以完全控制電腦。
漏洞存在條件:
據(jù)金山毒霸論壇的一名工作人員稱(http://bbs.duba.net/thread-23211524-1-1.html),任何已知程序,只要滿足以下兩個條件就可以被用來通過bash漏洞導(dǎo)致任意命令執(zhí)行:
1、程序在某一時刻使用bash作為腳本解釋器處理環(huán)境變量賦值;
2、環(huán)境變量賦值字符串的提交取決于用戶輸入。
如何驗證漏洞
那如何驗證是否存在漏洞?可以使用如下命令來檢查系統(tǒng)是否存在此漏洞:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
影響范圍:
GNU Bash≤4.3,此漏洞可能會影響到使用ForceCommand功能的OpenSSH sshd、使用mod_cgi或mod_cgid的Apache服務(wù)器、DHCP客戶端、其他使用Bash作為解釋器的應(yīng)用等。
而另一個網(wǎng)站更詳細(xì)的報道介紹,這個漏洞能影響眾多的運行在GNU/Linux上的會跟BASH交互的應(yīng)用程序,包括:
在sshd配置中使用了ForceCommand用以限制遠(yuǎn)程用戶執(zhí)行命令,這個漏洞可以繞過限制去執(zhí)行任何命令。一些Git和Subversion部署環(huán)境的限制Shell也會出現(xiàn)類似情況,OpenSSH通常用法沒有問題。
Apache服務(wù)器使用mod_cgi或者mod_cgid,如果CGI腳本在BASH或者運行在子SHELL里都會受影響。子Shell中使用C的system/popen,Python中使用os.system/os.popen,PHP中使用system/exec(CGI模式)和Perl中使用open/system的情況都會受此漏洞影響。
PHP腳本執(zhí)行在mod_php不會受影響。
DHCP客戶端調(diào)用shell腳本接收遠(yuǎn)程惡意服務(wù)器的環(huán)境變量參數(shù)值的情況會被此漏洞利用。
守護(hù)進(jìn)程和SUID程序在環(huán)境變量設(shè)置的環(huán)境下執(zhí)行SHELL腳本也可能受到影響。
任何其他程序執(zhí)行SHELL腳本時用BASH作為解釋器都可能受影響。Shell腳本不導(dǎo)出的情況下不會受影響。