WAF記事ブログ 10-08-2017

ShellShock(CVE-2014-6271)の解説

デジサート
Blog | DigiCert
このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は2014年9月に公表されたGNU Bashの脆弱性について解説しています。この脆弱性はShellShockと呼ばれます。

概要

UnixやLinux等のOSでは、ユーザーからのコマンドを解釈実行するプログラムとしてシェルが用いられます。シェルの中でもLinuxやMac OS X等に標準で採用され、もっとも広く用いられているものにBashがあります。

他のシェル同様Bashにはプログラミングの機能があり、関数を環境変数により外部から指定することができます。この機能に脆弱性があり、環境変数経由で、外部から指定された任意のプログラムを実行できてしまいます。

Bashに対して外部から環境変数を指定する方法の典型例はCGIプログラムによるものですが、これ以外にメール受信など複数の方法が指摘されており、9月以降現在まで、攻撃が活発に継続されています。

攻撃のイメージと影響

Perl言語により記述されたCGIプログラムがあり、以下の部分によりメール送信をしているとします。以下のプログラムは外部からのパラメータ指定などはなく、一見すると攻撃の余地はありません。

system('/usr/sbin/sendmail admin@example.jp < mail.txt');

しかし、このCGIプログラムを起動する際に、ブラウザのUser-Agentを以下のように指定することで攻撃ができてしまいます。

) { :;}; /bin/cat /etc/passwd

CGIプログラムに対しては、User-AgentなどHTTPヘッダは環境変数経由で渡されます。そして、CGIプログラムからsendmailコマンドを起動する際に、system関数の実装上シェルが起動されます。このため、デフォルトシェルとしてbashが指定されている環境では、上記のアクセスの結果 /etc/passwdの内容が表示されます。

root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh 【以下略】

脆弱性による影響

この脆弱性による影響の例として下記がありますが、これらに限定されるわけではありません。
  • 秘密情報の漏洩
  • データの改ざん
  • 他サイトへの攻撃の踏み台

脆弱性の有無の確認方法

Bashのプロンプトから以下を実行してください。

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

下記が表示された場合、ShellShock脆弱性があることになります。

this bash is vulnerable

対策

Bashの最新版を導入するか、Bashの最新のパッチを適用することで対処できます。必ず最新のパッチを全て適用するようにしてください。

なお、デジサートの「クラウド型WAF」では、ShellShock攻撃からウェブサイトが攻撃を受けるのを防ぐことができます。

参考文献

JVNVU#97219505

GNU Bash に OS コマンドインジェクションの脆弱性

http://jvn.jp/vu/JVNVU97219505/index.html

修正の上再掲しました。

UP NEXT
5 Min

特集記事

証明書ライフサイクル管理の自動化に向けた 3 つの鍵

03-06-2024

S/MIME の導入を阻むハードルを乗り越える

S/MIME ソリューションに求める 3 つの重要な要素、および S/MIME ソリューションが必要な理由

Entrust社の証明書誤発行問題から分かること