ミドルウェアの不具合に起因するサービス妨害攻撃の説明

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は、ミドルウェアのバグに基づくサービス妨害攻撃(Denial of Service; DOS)を受けやすい脆弱性について解説をしています。

Posted in WAF

ShellShock(CVE-2014-6271)の解説

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は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攻撃からウェブサイトが攻撃を受けるのを防ぐことができます。 […]

Posted in WAF

OSコマンドインジェクション脆弱性(CWE-78)の解説

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。 今回は、最近著名CMSの脆弱性として情報漏えいを起こした原因としてニュースをにぎわしており、Webアプリケーションの脆弱性の中でも最も危険度の高いOSコマンドインジェクションについて解説をしています。 概要 Webアプリケーションの中には、機能の実現のために外部コマンドを呼び出すものがあります。また、多くのアプリケーションでは、メール送信の機能をsendmailコマンドの呼び出しで実現し、外部からのファイルダウンロードをwgetやcurl等のコマンド呼び出しにより実現する場合もあります。 外部コマンドにパラメータを渡して呼び出している場合、パラメータを巧妙に細工することにより、開発者が意図しない別のプログラムを呼び出せる場合があります。これにより悪意のあるコマンド呼び出しを行う攻撃がOSインジェクション攻撃です。また、OSコマンドインジェクション攻撃を許す状況をOSコマンドインジェクション脆弱性と言います。 OSコマンドインジェクションはソフトウェアの脆弱性として継続して報告されており、サイト改ざんなどの攻撃に悪用されています。 攻撃のイメージと影響 Webアプリケーションで利用者登録の際にメールアドレスを登録してもらい、そのメールアドレスに対して通知メールを送信している場合を想定します。以下のPerlスクリプトで$mailは、利用者が入力したメールアドレスです。 system(“/usr/sbin/sendmail $mail < /var/data/message.txt”); ここで、$mail = “test@example.jp; cat /etc/passwd” と外部から指定された場合、生成されるコマンドは以下の通りです。 /usr/sbin/sendmail test@example.jp; cat /etc/passwd < /var/data/message.txt コマンド中のセミコロン「;」は、2つ以上のコマンドを続けて実行する際の区切り文字なので、上記コマンド呼び出しにより/etc/passwdの内容を表示する結果となります。この他、様々なコマンド呼び出しが可能です。 脆弱性による影響 この脆弱性による影響の例として下記がありますが、これらに限りません。OSコマンドインジェクション攻撃を受けると、サーバが乗っ取られた状態になり、最悪の場合はサーバ内部からの脆弱性攻撃により、root権限を奪取される可能性があります。 サーバ内のファイルの閲覧、書き換え、削除 不正なシステム操作(ユーザアカウントの追加、変更、その他) 不正なプログラムのダウンロード、実行 他のサーバーへの攻撃(踏み台) 脆弱性の有無の確認方法 OSコマンドインジェクション脆弱性の有無の確認は、ソースコードを確認する方法が確実です。system、exec等外部コマンドを呼びだすことのできる関数名やメソッド名を検索して、該当箇所を目視で確認します。 あるいは、ネットワーク経由の手動診断で脆弱性の有無を検証することもできます。この場合、独立行政法人情報処理推進機構(IPA)が公開している「安全なウェブサイトの作り方」別冊の「ウェブ健康診断仕様」に診断の方法が説明されており、参考になります。 対策 OSコマンドインジェクション脆弱性はアプリケーションのバグなので、アプリケーション改修による対策が基本です。外部コマンドを使わないで同じ機能を実現できる場合は、外部コマンドを呼ばない実装の方が安全で効率も良くなる場合が多いです。どうしても外部コマンドを使用する必要がある場合は、シェルを経由しないコマンド呼び出しの方法を採用します。詳しくは「安全なウェブサイトの作り方」等の参考資料を御覧ください。 なお、デジサートの「クラウド型WAF」では、OSコマンドインジェクション脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。 参考文献 安全なウェブサイトの作り方 https://www.ipa.go.jp/security/vuln/websecurity.html 修正の上再掲しました。 OSコマンドインジェクション脆弱性(CWE-78)の解説 was last modified: April 22nd, 2020 by DigiCert Japan

Posted in WAF

Apache Struts2の任意コード実行可能な脆弱性S2-016(CVE-2013-2251)

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は2013年に公表されたApache Strus2の脆弱性(S2-016)の概要、影響、対策について解説をしています。

Posted in WAF

SQLインジェクション脆弱性(CWE-89)

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は2005年以来継続して攻撃被害のあるSQLインジェクションについて解説をしています。

Posted in WAF

ディレクトリトラバーサル(CWE-22)

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は代表的なWebアプリケーション脆弱性であるディレクトリトラバーサルについて解説をしています

Posted in WAF

クロスサイトスクリプティング(CWE-79)

このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は代表的なWebアプリケーション脆弱性であるクロスサイトスクリプティングについて解説をしています。

Posted in WAF