問題:我想要知道我的Linux服務(wù)器是否存在bash破殼漏洞,以及如何來保護(hù)我的Linux服務(wù)器不受破殼漏洞侵襲。
2014年9月24日,一位名叫斯特凡·沙澤拉的安全研究者發(fā)現(xiàn)了一個(gè)名為“破殼”(Shellshock,也稱為“bash門”或“Bash漏洞”)的bash漏洞。該漏洞如果被滲透,遠(yuǎn)程攻擊者就可以在調(diào)用shell前通過在特別精心編制的環(huán)境中輸出函數(shù)定義執(zhí)行任何程序代碼。然后,這些函數(shù)內(nèi)的代碼就可以在調(diào)用bash時(shí)立即執(zhí)行。
注意,破殼漏洞影響到bash版本1.14到4.3(當(dāng)前版本)。雖然在寫本文時(shí)還沒有該漏洞權(quán)威而完整的修復(fù)方案,也盡管主要的Linux發(fā)行版(Debian,Red Hat,CentOS,Ubuntu和 Novell/Suse)已經(jīng)發(fā)布了用于部分解決與此漏洞相關(guān)的補(bǔ)丁(CVE-2014-6271和CVE-2014-7169),并且建議盡快更新bash,并在隨后數(shù)日內(nèi)檢查更新(LCTT 譯注,可能你看到這篇文章的時(shí)候,已經(jīng)有了完善的解決方案)。
檢測(cè)破殼漏洞
要檢查你的Linux系統(tǒng)是否存在破殼漏洞,請(qǐng)?jiān)诮K端中輸入以下命令。
$ env x='() { :;}; echo "Your bash version is vulnerable"' bash -c "echo This is a test"
如果你的Linux系統(tǒng)已經(jīng)暴露給了破殼漏洞滲透,命令輸出會(huì)像這樣:
Your bash version is vulnerableThis is a test
在上面的命令中,一個(gè)名為x的環(huán)境變量已經(jīng)被設(shè)置可用于用戶環(huán)境。就如我們所了解到的,它并沒有賦值(是一個(gè)虛函數(shù)定義),后面跟了一個(gè)任意命令(紅色),該命令將在bash調(diào)用前執(zhí)行。
為破殼漏洞應(yīng)用修復(fù)
你可以按照以下方法安裝新發(fā)布的bash補(bǔ)丁。
在Debian及其衍生版上:
# aptitude update aptitude safe-upgrade bash
在基于Red Hat的發(fā)行版上:
# yum update bash
打補(bǔ)丁之前:
Debian:
CentOS:
打補(bǔ)丁之后:
Debian:
CentOS:
注意,在安裝補(bǔ)丁前后,各個(gè)發(fā)行版中的bash版本沒有發(fā)生變化——但是你可以通過從更新命令的運(yùn)行過程中看到該補(bǔ)丁已經(jīng)被安裝(很可能在安裝前需要你確認(rèn))。
如果處于某種原因你不能安裝該補(bǔ)丁,或者針對(duì)你的發(fā)行版的補(bǔ)丁還沒有發(fā)布,那么建議你先試用另外一個(gè)shell,直到修復(fù)補(bǔ)丁出現(xiàn)。謝謝閱讀,希望能幫到大家,請(qǐng)繼續(xù)關(guān)注腳本之家,我們會(huì)努力分享更多優(yōu)秀的文章。