GNU Bourne Again Shell(bash)的Shellshock漏洞影響了廣泛使用bash的Unix/Linux服務(wù)器,由于它允許遠(yuǎn)程執(zhí)行代碼獲得與系統(tǒng)管理員相同的權(quán)限去控制系統(tǒng)而被認(rèn)為破壞力超過Heartbleed。而更糟糕的是,bash官方補(bǔ)丁沒有完全修復(fù)問題。為何修復(fù)Shellshock漏洞就像打地鼠,堵了一頭另一頭又冒出?Shellshock漏洞的工作原理是:攻擊者可以向任何使用bash交互的系統(tǒng)如Web服務(wù)器、Git版本控制系統(tǒng)和DHCP客戶端發(fā)送請求,請求包含了以環(huán)境變量儲存的數(shù)據(jù)。
環(huán)境變量就像是操作系統(tǒng)的剪切板,儲存了幫助系統(tǒng)和軟件運(yùn)行的信息。在本案例中,攻擊者發(fā)送的請求是精心構(gòu)造的,誘騙bash將其視為命令,bash像平常執(zhí)行良性腳本那樣執(zhí)行命令。這種欺騙bash的能力就是Shellshock漏洞。官方發(fā)布的補(bǔ)丁被發(fā)現(xiàn)仍然存在相似的漏洞。
計算機(jī)科學(xué)家David A. Wheeler在郵件列表上指出,bash的解析器存在許多漏洞,因為它在設(shè)計時就沒有考慮過安全性,除非它停止解析環(huán)境變量,否則修正就像是打地鼠。Wheeler建議打上非官方的補(bǔ)丁修正bash,這些補(bǔ)丁會破壞向后兼容性。其中一個補(bǔ)丁來自德國計算機(jī)安全專家Florian Weimer,他的補(bǔ)丁為bash函數(shù)加入前綴,防止它們被指明為系統(tǒng)變量。另一個補(bǔ)丁來自NetBSD開發(fā)者Christos Zoulas博士,他的補(bǔ)丁只允許bash在收到明確請求時輸入環(huán)境變量,消除安全風(fēng)險。
FreeBSD的bash實現(xiàn)則在最新的修正中默認(rèn)關(guān)閉了輸入功能。Wheeler等人相信,雖然破壞了向后兼容性,但不會影響太多的bash依賴系統(tǒng)。蘋果的OS X系統(tǒng)也存在Shellshock漏洞,蘋果表示大部分用戶不會面臨風(fēng)險,只有配置了advanced UNIX services的用戶會受到影響。OS X使用了v3.2.51.(1)的GNU bash,新版本bash許可證換到了條款更嚴(yán)格的GPLv3,所以蘋果仍然使用舊版本。