このブログではウェブサイトやその上で動作しているウェブアプリケーションの脆弱性について紹介すると共に注意喚起をする目的でまとめられています。
今回は、ミドルウェアのバグに基づくサービス妨害攻撃(Denial of Service; DOS)を受けやすい脆弱性について解説をしています。
※なお、内容に関しましてはHASHコンサルティング株式会社の徳丸 浩様に監修いただいています。
+++++++++++++++++++++++++++++++++++++++++++++++
ミドルウェアの不具合に起因するサービス妨害攻撃
■概要
サービス妨害(DoS)攻撃という手法があります。細工を施したリクエストや大量のリクエストをサーバに送信することにより、サーバの動作を遅くしたり、場合によってはサーバーを停止させる攻撃のことです。DoS攻撃では情報の漏洩やデータの改ざんは通常起こりませんが、サーバ停止の状況によっては、ファイルの一部が破損する場合はあり得ます。
DoS攻撃としてよく用いられる手法にはネットワークの問題を悪用したものが多いのですが、それ以外にミドルウェアやアプリケーションの不具合を悪用する方法もあります。その一例として、Apacheの不具合を悪用したApache Killer(CVE-2011-3192)やPHPやJava等の言語システムの不具合を悪用したhashdos(CVE-2011-4885等)があります。
■攻撃のイメージと影響
以下はApache Killerの送信するHTTPリクエストです。一部を割愛しています。Rangeヘッダに攻撃の特徴があります。
GET / HTTP/1.1
Host: example.jp
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-16,5-17,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30,5-31,5-32, 【中略】 5-1281,5-1282,5-1283,5-1284,5-1285,5-1286,5-1287,5-1288,5-1289,5-1290,5-1291,5-1292,5-1293,5-1294,5-1295,5-1296,5-1297,5-1298,5-1299
上記リクエストを脆弱性のあるApacheが受け取ると、CPU使用量、メモリ使用量の両方が肥大化し、メモリ不足とCPU能力の枯渇がおきます。特に、メモリ不足により、Linux OSにおいてはOOM Killerという仕組みが動き、メモリ使用量の多いプロセスを停止していきます。OOM Killerはプロセスの重要度を考慮しないので、データベースサーバ等サービス提供に不可欠なプロセスまで停止させられ、ウェブサーバーは機能停止に陥ってしまいます。
以下はPHPに対するhashdos攻撃のリクエスト例です。
POST /phpinfo.php HTTP/1.1 Host: example.jp Content-Type: application/x-www-form-urlencoded Content-Length: 1441792 EzEzEzEzEzEzEzEz=&EzEzEzEzEzEzEzFY=&EzEzEzEzEzEzEzG8=&EzEzEzEzEzEzEzH%17=&EzEzEzEzEzEzFYEz=&EzEzEzEzEzEzFYFY=&EzEzEzEzEzEzFYG8=&EzEzEzEzEzEzFYH%17=&EzEzEzEzEzEzG8Ez=&EzEzEzEzEzEzG8FY=&EzEzEzEzEzEzG8G8=&EzEzEzEzEzEzG8H%17=&EzEzEzEzEzEzH%17Ez=& 【後略】 |
このリクエストをPHPが受け付けると、パラメータを内部の連想配列(ハッシュと呼ばれます)に格納する処理に異常に時間がかかり、その間新規リクエストを受けつられなくなります。ただし、Apache Killerと異なりメモリが枯渇するわけではないので、攻撃が終了すると直ちにサーバは回復します。
■脆弱性による影響
DoS攻撃による影響の例としては以下があります。
- サーバー速度の遅延
- 新規リクエスト受付の停止
- サーバーの異常終了
■脆弱性の有無の確認方法
シマンテックのSSLサーバ証明書に無償で提供される「脆弱性アセスメント」には、Apache Killerおよびhashdos脆弱性検出の機能が提供されています。
上記のような脆弱性スキャナ、脆弱性診断サービスが利用できない場合は、ApacheやPHP等のバージョンが対策済みかを確認して下さい。
Apache Killer の影響を受けるバージョン 2.2.0 ~ 2.2.20
Hashdosの影響を受けるもの
ASP.NET MS11-100 未適用のもの
Tomcat 5.5.34およびそれ以前、6.0.34およびそれ以前、7.0.22およびそれ以前
Ruby 1.8.7-p352およびそれ以前
PHP 5.3.8およびそれ以前
■対策
対象ソフトウェアの対策バージョンへのバージョンアップあるいはパッチ適用を行います。
Apache Killerおよびhashdosには、それぞれ緩和策があります。なんらかの理由でパッチ適用等ができない場合、緩和策を実施することで、攻撃を受けた場合の被害を軽減できます詳しくは参考文献を参照ください。
なお、「シマンテック クラウド型WAF」では、Apache Killerやhashdos等の脆弱性からウェブサイトが攻撃を受けるのを防ぐことができます。
■参考文献
独立行政法人情報処理推進機構(IPA)の注意喚起
https://www.ipa.go.jp/security/ciadr/vul/20110831-apache.html
https://www.ipa.go.jp/security/ciadr/vul/20120106-web.html
Apache公式サイトのアドバイザリ(英語)