$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
でテストすると,アウトであるので,対策は必要.元は古いのだが 本家 にはちゃんとパッチも出てる (この騒ぎの前の最後のパッチから10年以上開いてる (^^; ).
ということで,ソースからビルド.
本家 からソースを持ってくる.
$ wget http://ftp.gnu.org/gnu/bash/bash-2.05b.tar.gz
展開.
$ tar -xzf bash-2.05b.tar.gz
$ cd bash-2.05b
パッチを13個取ってくる.
$ wget http://ftp.gnu.org/gnu/bash/bash-2.05b-patches/bash205b-001
ほんとうは {01..13} とやって手を抜きたかったのだが,この展開ができなかったので,これを13回繰り返したw
パッチを当てるのも,
$ cat bash205b-001 | patch -p0
これを13回繰り返したorz
まあ,history機能はあるので大したことではないのだけど.bash 3.2 のようにパッチ57とかならシェルスクリプトでも書いたろうけど,13個くらいなら手作業の方が速いw
で,あとは,
$ ./configure
$ make
ここで
$ env x='() { :;}; echo vulnerable' ./bash -c "echo this is a test"
root になって
# make install
これで,/usr/local/bin にインストールされる.
元々のは /usr/bin に入っているので,古いのを消して,新しいのにシンボリックリンクを張る.
# mv /usr/bin/bash /usr/bin/bash.old
# ln -s /usr/local/bin/bash /usr/bin/bash
このコメントはブログの管理者によって削除されました。
返信削除