我剛剛透過更新彈出視窗更新了 Ubuntu。我知道 Shellshock,所以我很快就開始安裝。現在,當我嘗試跑步時
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
我沒有得到輸出(我之前得到的)
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
如中所述什麼是 CVE-2014-6271 bash 漏洞 (Shellshock) 以及如何修復它?
相反,現在我只得到“你好”。可以安全地假設我安裝的更新隱藏了這些錯誤訊息嗎?查看軟體中心後,我看到我安裝了以下更新:
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
更具體地說,4.3-7ubuntu1.4是否隱藏了函數定義嘗試錯誤訊息?很抱歉有這樣的懷疑,但經過一番谷歌搜尋後,我還沒有發現類似的問題。任何清晰度將不勝感激。謝謝!
答案1
env x='() { :;}; echo OOPS' bash -c :
這將在易受攻擊的系統上列印“OOPS”,但如果 bash 已修補,則會靜默退出。
這是在以下位置看到的行為:
- Debian
squeeze
(bash
包4.1-3+deb6u2
) - CentOS 6.5(
bash
包0:4.1.2-15.el6_5.2
) - Arch Linux(
bash
套件4.3.026-1
)
我推測這就是修復的目的,但由於某種原因,Ubuntu 的初始bash
補丁產生了錯誤,而不是默默地忽略額外的程式碼。
最初的補丁實際上是故意的當在環境變數中發現錯誤的函數定義時產生錯誤。更新的補丁甚至只查看特殊前綴的變量,這消除了幾乎所有的現實世界風險。嘗試一下
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
——你應該會看到一個錯誤。
我已經驗證了這一點:
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4