更新後にBashインストールがShellShockバグに対して脆弱にならないようにするにはどうすればよいですか?
更新後にBashインストールがShellShockバグに対して脆弱にならないようにするにはどうすればよいですか?
回答:
CVE-2014-6271の脆弱性を確認するには
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
脆弱という言葉をエコーバックするべきではありません。
/tmp/echo
後で削除できるファイルを作成または上書きします。テストする前に削除する必要があります)
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
日付という言葉を言ってからのようなメッセージで文句を言うべきcat: echo: No such file or directory
です。代わりに、現在の日時が何であるかを示している場合、システムは脆弱です。
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
テキストをエコーバックしないでくださいCVE-2014-7186 vulnerable, redir_stack
。
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
テキストをエコーバックしないでくださいCVE-2014-7187 vulnerable, word_lineno
。
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
これに関する合格結果は、テキストのみをエコーバックすることですtesting CVE-2014-6277
。perlを実行する場合、またはperlがインストールされていないことを訴えている場合、それは間違いなく失敗です。パッチが適用されていないシステムがなくなったため、他の障害の特性についてはわかりません。
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
このテストのパスは、テキストのみをエコーバックすることですtesting CVE-2014-6278
。あなたのものがhi mom
どこにでもエコーバックする場合、それは間違いなく失敗です。
foo='() { echo not patched; }' bash -c foo
これに一般的なテストを追加できますか?関数のエクスポートが別の名前空間に配置されるまで、パーサーのバグから次のバグへの実行を停止しません。
脆弱なバージョンのBashによって自動的に評価される、特別に細工された環境変数をエクスポートします。
$ export testbug='() { :;}; echo VULNERABLE'
ここで、単純なエコーを実行して、Bashが$ testbugのコードを評価したかどうかを確認します(その変数を自分で使用していない場合でも):
$ bash -c "echo Hello"
VULNERABLE
Hello
「VULNERABLE」文字列が表示されている場合、答えは明らかです。それ以外の場合、心配する必要はなく、パッチを適用したバージョンのBashは問題ありません。
複数のパッチが主要なLinuxディストリビューションによってリリースされており、脆弱性が完全に修正されない場合があることに注意してください。このバグのセキュリティアドバイザリとCVEエントリを確認してください。
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
ShellShockは実際にはbashの複数の脆弱性の組み合わせであり、現時点ではこの脆弱性を悪用するマルウェアも存在するため、ShellShockは未解決の問題である可能性があり、この問題に関するRedHatからのアップデートを含むスレッドがあります。
コマンドを実行:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
出力が次の場合:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
修正はありません。
出力が次の場合:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
あなたはCVE-2014-6271
修正した
出力が次の場合:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
あなたは脆弱ではありません。
ShellShockチェックのもう1つの部分は、CVE-2014-7169脆弱性チェックで、システムがファイル作成の問題から保護されていることを確認します。BashのバージョンがCVE-2014-7169に対して脆弱かどうかをテストするには、次のコマンドを実行します。
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
システムが脆弱な場合、日時が表示され、/ tmp / echoが作成されます。
システムが脆弱でない場合、次のような出力が表示されます。
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
CGIスクリプトの脆弱性についてWebサーバーをテストするために、ShellShockerというCLIユーティリティを作成しました。サイトをテストするには、次を実行します。
python shellshocker.py <your-server-address>/<cgi-script-path>
すなわち
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
編集:このユーティリティは削除されました、ごめん: '(
次のオンラインテストにCGI URLを送信できます。