SSブログ

bashの脆弱性(CVE-2014-6271:ShellShock)の対応 Debian Squeeze [デジもの]

■概要

最近見つかったShellShockと呼ばれている
bashのセキュリティ問題(CVE-2014-6271)対応を
やったメモ。

CVE-2014-6271:ShellShock
( https://www.ipa.go.jp/security/ciadr/vul/20140926-bash.html )
とは、
環境変数の"値"として指定された文字列の中に
ちょっと小細工してbashコマンドを埋め込むと、
"値"だったはずのコマンド文字列が実行されてしまう
というなかなか厄介なやつらしい。

たとえば、Webサーバーが上がっているところに
User-Agentに小細工されてアクセスされると、
Firewallとかは無意味で、
・システム破壊
・情報抜き出し
・ウィルス/ワーム/バックドアの仕込み
などができてしまう。


■経緯

no-mi家の環境では、未だにDebian Squeezeが
ホームサーバーで稼働していたりするので、
ShellShockは対応した方がよさそうであった。


■手順

【STEP 1】
自分の環境がこの問題に該当するのかチェックする。

次のようなコマンドを実行してみる。

------------------------------------------------------------
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
------------------------------------------------------------

実行結果。
------------------------------------------------------------
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
vulnerable
this is a test
------------------------------------------------------------

「vulnerable」が表示されてしまったら、アウト。
変数に渡された"値"だったはずの
echo vulnerable が実行されてしまっている。
この環境は問題に該当している。


【STEP 2】
問題に対応するパッチを適用する。

apt-getを使うのが簡単と思ったのでそうした。
ただ、パッチがあるところにapt-getがモジュールの
Updateを探しに行ってくれるかが問題。

http://unix.stackexchange.com/questions/157414/how-to-only-install-security-updates-on-debian
あたりを参考にして、
rootユーザーで以下の操作を実行する。

/etc/apt/sources.list に
次の行を追加。

------------------------------------------------------------
deb http://http.debian.net/debian squeeze-lts main contrib non-free
deb-src http://http.debian.net/debian squeeze-lts main contrib non-free
------------------------------------------------------------

「non-free」とか書くと、どこかから後で請求が来るのでは
ないかと、ちょっとドキドキするが、実際はそんなことはないので、
やってしまうのだ。
※Windoewsでいうところの「フリーソフト」「有料ソフト」
 とは定義が違っていて、ソースコード改変可能、再配布可能とか
 そのレベルまで「フリー」ではないものが「non-free」と
 言われている。


apt-getを実行する。

------------------------------------------------------------
$ apt-get update
$ apt-get install -t squeeze-lts --only-upgrade bash
------------------------------------------------------------

このUpdateの後のrebootは不要である。
Update完了後Callされるbashはこの問題を引き起こさない。


【STEP 3】
自分の環境がこの問題の対応完了できているかチェックする。

STEP1と同じコマンドを実行してみる。

------------------------------------------------------------
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
------------------------------------------------------------

実行結果。
------------------------------------------------------------
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
this is a test
------------------------------------------------------------

今度は、「vulnerable」が表示されず、
問題は解消されていることが確認できた。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。