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