更新日:2011年10月3日
Apache HTTPdサーバ2.x系に、Rangeヘッダ処理に関するサービス不能攻撃を許してしまう脆弱性(CVE-2011-3192)が存在します。Rangeヘッダは、ファイルの分割ダウンロードや、ダウンロード中断・再開などで利用するヘッダで、ダウンロードを範囲指定します。脆弱性は、このRangeヘッダに、カンマ区切りで非常に多くの範囲指定が設定された場合に、Apache HTTPdサーバがサービス不能状態に陥ってしまうというものです。
Apache HTTPdサーバをベースとした日立製品も、この脆弱性の影響を受けます。
基本値:7.8
攻撃元区分:ネットワーク
攻撃条件の複雑さ:低
攻撃前の認証要否:不要
機密性への影響(C):なし
完全性への影響(I):なし
可用性への影響(A):全面的
現状値:6.7 (2011年9月7日時点)
攻撃される可能性:攻撃可能
利用可能な対策のレベル:暫定対策
脆弱性情報の信頼性:開発者が情報を確認済
図1:脆弱性(CVE-2011-3192)の対応経緯
不正なHTTP要求を受信したHTTPdサーバプロセスが、サービス不能状態に陥る可能性があります。結果として、サーバ全体がサービス不能状態に陥る可能性があります。
Rangeヘッダ処理に起因した脆弱性を修正したバージョン/セキュリティ更新プログラムの適用、あるいは、[5. 回避策]を適用してください。
Fixed in Apache httpd 2.2.20
http://httpd.apache.org/security/vulnerabilities_22.html#2.2.20
+ Hitachi Web Server
+ Hitachi Web Serverを同梱あるいはコンポーネントとして使用する製品
+ Cosminexusを同梱あるいはコンポーネントとして使用する製品
Hitachi Web ServerにおけるRangeヘッダによるDoS脆弱性
+ Hitachi IT Operations製品
Hitachi IT Operations製品におけるRangeヘッダによるDoS脆弱性
+ JP1製品
JP1製品におけるRangeヘッダによるDoS脆弱性
+ Hitachi Command Suite製品
Hitachi Command Suite製品におけるRangeヘッダによるDoS脆弱性
+ AlaxalA製品
* AX6000S/AX3800S/AX3600S/AX2400Sシリーズ
* AX7800S/AX7800R/AX7700R/AX5400S/AX2000R/AX2500S/AX1200S/AX620Rシリーズ
Apache HTTPdサーバでの回避策について解説します。個々の製品の回避策については、[4. 対策]を参照してください。
Apache HTTPD Security ADVISORY (UPDATE 3 - FINAL)
Range header DoS vulnerability Apache HTTPD prior to 2.2.20.
http://httpd.apache.org/security/CVE-2011-3192.txt
HTTPdサーバ設定ファイルhttpd.confに、Rangeヘッダを許容するが、記述できる項目数に上限を設ける設定(下記設定例では上限値=5件)を追加します。運用上、回避策による影響が一番少なくなります。
----- httpd.conf -----
# setenvif_module (SetEnvIf)を使用して、Rangeヘッダの項目数が
# 5件以下かどうかを判定する。
# 5件よりも大きい場合には、headers_module (RequestHeader)を使って、
# Rangeヘッダを無視する。
SetEnvIf Range (?:,.*?){5,5} bad-range=1
RequestHeader unset Range env=bad-range
# Request-Rangeヘッダは、古いブラウザ(MSIE3, Netscape 2 or 3)で
# 使われていた。Request-Rangeヘッダは無視する。
RequestHeader unset Request-Range
# 制限を越えたアクセスのログ(制限超過ログ)を取得する。
CustomLog logs/range.log common env=bad-range
----- httpd.conf -----
# rewrite_module (RewriteCond)を使用して、Rangeヘッダの項目数が
# 5件以下かどうかを判定。
# 5件よりも大きい場合には、rewrite_module (RewriteRule)を使って、
# エラー(403 Forbidden)を返す。
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$) [NC]
RewriteRule .* - [F]
# Request-Rangeヘッダは、古いブラウザ(MSIE3, Netscape 2 or 3)で
# 使われていた。Request-Rangeヘッダは無視する。
RequestHeader unset Request-Range
HTTPdサーバ設定ファイルhttpd.confに、Rangeヘッダを許容しない設定を追加します。ただし、ブラウザでのダウンロード中断・再開の機能が利用できなくなります(図2)。
----- httpd.conf -----
# headers_module (RequestHeader)を使って、RangeとRequest-Range
# ヘッダを無視する。
RequestHeader unset Range
RequestHeader unset Request-Range
図2:Firefoxにおけるダウンロード中断・再開の例
担当:寺田、大西/HIRT
グローバルサイン:
重要な電子文書にデジタル署名。広報にも役立っています