JPCERTコーディネーションセンター(JPCERT/CC)は2011年8月31日、インターネット上で公開されているサーバー向けのWebサーバーソフトとして、世界で最も多く使われている「Apache HTTP Server」のほとんどのバージョンについて、サービス妨害(DoS、Denial of Service)攻撃を受ける危険がある脆弱性が発覚したことを報告、ユーザーに対して注意を呼びかけた。

 クラッカが「Range」ヘッダー(ごく一部の古いWebブラウザーで使われる「Request-Range」ヘッダーも同様)に細工を施したHTTPリクエスト(GETリクエスト)を、Apache HTTP Serverが稼働しているサーバーに対して送りつけることでサーバーのシステムリソースが大量に消費され、サービス不能な状態に陥る可能性があるという。Rangeヘッダーは、クライアントがサーバーからコンテンツの一部のみを取得したい場合に、その範囲を指定するために使うヘッダー情報である。

 同サーバーソフトの開発元である「The Apache Software Foundation」によれば、この脆弱性を悪用する攻撃ツールが既に公開されており、実際に脆弱性を狙った攻撃(ゼロデイ攻撃)も確認されているという。

 対象となるApache HTTP Serverのバージョンは、「1.3系の全バージョン」(2010年に開発が終了)と「同2.x系の全バージョン」(現在開発中)と非常に幅広い。事実上、現在世の中で使われているApacheのほぼすべてのバージョンが影響を受けることになる。JPCERT/CCによれば、上記以外にもApache HTTP Serverを組み込んでいる様々な製品が影響を受ける可能性があるとしている。

抜本的な回避策は2.2.20へのアップグレードのみ

 対策については、2.2系についてはThe Apache Software Foundationが脆弱性を修正した「Apache 2.2.20」を公開しており、可能ならこれにアップグレードするのが最善策である。また、一部のOSディストリビュータからも修正済みプログラムが提供され始めているという。ただし、Webサーバーのような重要なサーバーソフトの場合、同系列だからといって即座にアップグレードできない事情があるケースも多い。JPCERT/CCでも「十分なテストを実施の上、修正済みプログラムを適用することをお勧めする」と注意喚起している。

 2.2以外の系列(2.0系および1.3系)については、8月31日現在、修正プログラムはまだ提供されていない。JPCERT/CCでは提供されるまでの間、The Apache Software Foundationが紹介している一時的な回避策を適用するか、サポートが終了している1.3系については2.0/2.2系へのアップグレードも検討するべきであるとしている。

 一時的な回避策としては、(1)「SetEnvIf」ディレクティブ(2.2系の場合)や「mod_rewrite」モジュール(2.2系より前のバージョンや1.3系)を使って不正なヘッダーやリクエストそのものを拒否する方法、(2)リクエストフィールドのサイズを200バイト程度に制限する方法、(3)「mod_headers」モジュールを使ってRangeヘッダーの使用を禁止する方法---などが挙げられている。これ以外にRangeヘッダーをカウントするモジュールの組み込みや非公式パッチを適用する方法なども存在する。こうした回避策の適用に当たっては、様々な弊害が発生する危険があるため、影響を十分に考慮した上で適用する必要がある。

 なお、JPCERT/CCでは、今回の脆弱性を使用する一部の攻撃コードについて、いくつかのApacheのバージョンを対象に実際に検証を行っている。結果は、「2.0.64」と「2.2.9」については、「サーバー自体の操作が不能な状態に陥り、攻撃を停止しても状況に変化はなく、サービス不能な状態が続いた」という。「2.2.19」では、「メモリー使用量が増加し、レスポンスは低下したがWebコンテンツの閲覧は可能だった」。最新の「2.2.20」については、「攻撃コードを実行してもWebサーバーがサービス不能状態にならないことを確認した」としている。

 インターネットの土台を構成する極めて重要なソフトであるApache HTTP Serverの事実上ほとんどのバージョンが対象となる脆弱性だけに、今後どれくらいのWebサーバーやサービスに実際に影響が及ぶのか想像することさえ難しい。JPCERT/CCでも、Webサーバー管理者に対して注意喚起をするだけでなく、関連する情報の提供を広く呼びかけている。