ShellShock〜bashの脆弱性とは〜

f:id:c_taquna:20140928001927j:plain

今、ネットではbash脆弱性が見つかったと大騒ぎです。正直そんなに詳しくないのですが、自分なりに調べたことを書こうと思います。

 

結局何が怖いのか

bashとは、OSのコマンドを実行するために必要なプログラムです。そのbashに不具合があり、bashを使用しているサーバ上で外部から任意のコマンドを実行することができます。つまり、ファイルを勝手に削除したり情報を盗み出したりすることができてしまう。

 

どういう仕組でおきているのか

環境変数に、関数の定義の後に任意のコマンドを入力することでそのコマンドを実行できてしまうというものです。(内部処理までは押さえてないです、、不勉強ですいません)

例えば、以下のコマンドを実行すると「vuln」という文字がコンソール上に出力されます。このコマンドを分けると、まずは「X」という環境変数に「(){ :;};」という関数を定義してます。その後ろに「 echo vuln」というコマンドを書いています。そして、さらにその後ろに「bash -c 'echo'」が書かれています。

 

$ X='() { :;}; echo vuln' bash -c 'echo'

 

本当は環境変数 X に文字列を格納しているだけなので、コマンドの実行結果は'echo'だけつまり改行だけになるはずなのです。しかし今回見つかった脆弱性を修正しない限り echo vuln も実行されてしまいます。 echo は出力するだけなので問題ないですが、これが rm -rf などにされたりする可能性を考えると恐ろしいですね、、。

 

bash ではコマンドが実行される間に環境変数の一覧が内部で作成されるのですが、この時点でコマンドが実行されるため、環境変数の名前がなんであっても実行されてしまいます。

 

対策はどうすればよいのか

 bashのアップデートを行う必要があります。以下のコマンドで可能です。筆者はまだ実施していないのですが、影響範囲・影響対象は見切れていないのですが早めに実施したほうが良さそうですね。

 

yum update bash

 

 

参考サイト

bash ShellShockメモ(Hishidama's bash "shell shock" Memo)

Blog: bashの脆弱性がヤバすぎる件 – x86-64.jp - くりす研

先程から騒ぎになっているbashの脆弱性について | 上田ブログ

BASHの脆弱性でCGIスクリプトにアレさせてみました - ブログ - ワルブリックス株式会社