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