ShellShock
提供: セキュリティ
スポンサーリンク
ShellShock(シェルショック) とは、Unixのシェルの1つのbashの脆弱性です。ShellShockでは、シェルを起動してコマンドを実行するタイプのウェブアプリケーションを利用して、リモートでコマンドを実行することができます。
読み方
- ShellShock
- しぇるしょっく
目次
概要
必ずしも脆弱性が利用可能というわけではありません。条件が揃ったときに、ShellShockは猛威を振るうかもしれません。
ShellShockは、環境変数に任意のコマンドを設定して、bashを起動することで、任意のコマンドを実行できます。bashコードインジェクションとも言われます。
プログラミング言語でコマンド実行に利用される system()関数などを用いている場合、system()関数は、OSのシェルを起動して、コマンドを実行します。このシェルは、環境によって、実行されるシェルが異なるため、bashに脆弱性があったとしても、ShellShockの影響を受けない環境もあります。 ウェブアプリケーションが system()関数を利用していて、system()関数がbashを起動している場合には、ShellShockの影響を受けます。
影響を受ける環境
- system()系の関数で bash が起動される
- /bin/sh が起動されていても、/bin/sh が /bin/bash のシンボリックリンクやハードリンクになっている場合は影響を受けます。
- 明示的に bash を起動してコマンドを実行している
影響を受けない環境
- FreeBSD は影響を受けません。
- system()系関数がbashを起動しない。
- ShellShockに対応したbashがもう入っている
ShellShockのデモ
bashに問題を確認する方法
$ env x='() { :;}; echo this bash is vulnerable' bash -c : this bash is vulnerable
ウェブアプリケーションの問題を利用する方法
curlコマンドを利用した、ShellShockの確認方法です。
$ curl -q -A "() { :; }; /bin/uname -a" http://localhost/test.cgi Hello Linux u1.local 3.13.0-23-generic #45-Ubuntu SMP Fri Apr 4 07:01:54 UTC 2014 i686 i686 i686 GNU/Linux
test.cgi の例です。
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello\n"; system("bash -c ls -l /etc/passwd");
デモ
ShellShockのデモの動画です。フォントが小さいので、画面を最大化し、HDの最大画質で見てください。
YouTube で視聴される方は、 https://youtu.be/tbYMlyYRrgg から閲覧できます。
対応方法
bashのバージョンを上げるだけで対応できます。
関連項目
ツイート
スポンサーリンク