我最近遇到了shellshock bug,這是bash shell中的一個bug。它以某種方式使用env
命令來創建包含函數的環境變量。當一個新的bash殼催生什麼是env命令呢?
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
這些函數然後運行。我在很多地方閱讀,並得到了我剛剛寫的同樣的解釋。但是,我仍然無法確定上述命令的運行以及參數。 任何人都可以解釋嗎?
我最近遇到了shellshock bug,這是bash shell中的一個bug。它以某種方式使用env
命令來創建包含函數的環境變量。當一個新的bash殼催生什麼是env命令呢?
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
這些函數然後運行。我在很多地方閱讀,並得到了我剛剛寫的同樣的解釋。但是,我仍然無法確定上述命令的運行以及參數。 任何人都可以解釋嗎?
env
設置一個或多個環境變量,然後將其餘參數作爲命令運行。
這不是從以下語法顯著不同:
x='() { :;}; echo vulnerable' bash -c "echo this is a test"
一件事env
可以做(雖然功能沒有在上面的例子中使用)是創建一個清潔的環境;如果env
的第一個選項是單個-
(或-i
),則在執行顯式分配並運行該命令之前清理環境。
@ralph考慮到圍繞「shellshock」的宣傳和恐慌,你應該假設已經在討論這個話題。 – JakeGould 2014-09-25 19:47:58
@JakeGould:我通過互聯網閱讀帖子和討論,找到一個徹底的解釋 – Haris 2014-09-25 19:50:11
'man env'?這只是一種觸發錯誤的方法;知道'env'如何工作並不能解釋漏洞本身是如何工作的。 – chepner 2014-09-25 19:51:19