
更新日: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
グローバルサイン:
          重要な電子文書にデジタル署名。広報にも役立っています