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