web-dev-qa-db-ja.com

サーバーがShellshockバグに対して脆弱かどうかをテストするにはどうすればよいですか?

更新後、Bashのインストールが Shellshock バグの影響を受けないようにするにはどうすればよいですか?

80

脆弱なバージョンのBashによって自動的に評価される、特別に細工された環境変数をエクスポートします。

$ export testbug='() { :;}; echo VULNERABLE'

次に、簡単なエコーを実行して、その変数を自分で使用していなくても、Bashが$ testbugのコードを評価するかどうかを確認します。

$ bash -c "echo Hello"
VULNERABLE
Hello

「VULNERABLE」という文字列が表示されれば、答えは明白です。それ以外の場合は、心配する必要はなく、パッチを適用したバージョンのBashで問題ありません。

主要なLinuxディストリビューションから複数のパッチがリリースされており、脆弱性が完全に修正されない場合があることに注意してください。このバグがないかセキュリティアドバイザリと CVEエントリ を確認してください。

32

Shellshockは実質的に bashの複数の脆弱性の組み合わせ であり、 現在この脆弱性を悪用するマルウェアも存在する なので、Shellshockは未解決の問題である可能性があります、 この問題に関するRedHatからの更新を含むスレッド があります。

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
2

私は ShellShocker と呼ばれるCLIユーティリティを作成して、CGIスクリプトの脆弱性についてWebサーバーをテストしました。サイトをテストするには、次のコマンドを実行します。

python shellshocker.py <your-server-address>/<cgi-script-path>

すなわち

python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi

編集:このユーティリティは削除されました、申し訳ありません: '(

2
Liam Marshall

このオンラインテストにCGI URLを送信できます。

http://Shellshock.iecra.org

1
user245089