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