WAF記事ブログ 10-10-2017

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

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

概要

サービス妨害(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攻撃による影響の例としては以下があります。

  • サーバー速度の遅延
  • 新規リクエスト受付の停止
  • サーバーの異常終了

脆弱性の有無の確認方法

脆弱性診断サービスが利用できない場合は、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公式サイトのアドバイザリ(英語)

http://httpd.apache.org/security/CVE-2011-3192.txt

修正の上再掲しました。

UP NEXT
5 Min

特集記事

クラウド上で量子コンピュータをいかに保護するか

NIST PQC アルゴリズムに関する詳細な説明

従来の PKI がもたらす割高な機会損失