Article ID: 112171, created on Sep 8, 2011, last review on May 9, 2014

  • Applies to:
  • Plesk 12.0 for Linux

症状

Apache HTTP Server の DoS 脆弱性(CVE-2011-3192)
CVE-2011-3192 http://www.securityfocus.com/bid/49303/info

お使いの Apache サーバに脆弱性があるか確認する方法:

以下のコマンドを実行します。
# curl -I -H "Range: bytes=0-1,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" -s <your_domain> | grep Partial

206 Partial Content」というメッセージが出力された場合、この Apache サーバには脆弱性があります。

問題の現在の状況

この Apache サーバの脆弱性は、Parallels Plesk Panel の全バージョンに影響を与えます。

修正方法:

- Plesk Panel バージョン 10.2、10.3.x(CentOS): 次の 2 通りの Apache インストールが考えられます。

1. "Apache with SNI support" なし。 この場合、OS ベンダのリポジトリにある Apache アップデートを使用する必要があります。
2.
"Apache with SNI support" あり。この場合、以下のコマンドを使用して、Plesk 自動インストーラにより CentOS 上で SNI サポートありで Apache をアップグレードすることができます。
(注意)2011/9/8 時点では、コントロールパネル上の[アップデート]からアップグレードできません。必ずautoinstallerを実行してください。
# /usr/local/psa/admin/bin/autoinstaller --select-release-current --upgrade-installed-components

Plesk Parallels Virtuozzo Containers がある場合、以下のコマンドでノード上の全テンプレートをアップデートできます。
# vzpkg update

個別コンテナに対して pp-apache-sni テンプレートの Apache をアップデートする必要がある場合、以下のコマンドを使用する必要があります。
# vzpkg update Container_ID pp-apache-sni

他のすべての OS に対しては、OS ベンダが提供している Apache バージョン 2.2.20 または「解決策」で示すソリューションを使用して修正します。

- Plesk Panel バージョン 10.1.x、10.0.x、9.x の場合、OS ベンダが提供している Apache バージョン 2.2.20 または「解決策」で示すソリューションを使用して修正することができます。OS ベンダのリポジトリからの提供があれば、そこから Apache のアップデートをインストールする必要があります。

- Plesk Panel バージョン 8.6 またはそれ以前の場合、管理者インターフェース用とユーザのドメイン用という 2 つの Apache があり、 いずれも脆弱性があります。Panel 8.6 のみ、管理者用 Apache の脆弱性を修正するマイクロアップデート MU#4 を提供しております。Panel 8.6にログインしてアップデータを実行してください。マイクロアップデートが適用されないPanelの管理者用 Apache には以下の方法により個別に脆弱性に対処することができます。ユーザのドメイン用、クライアントの Apache はベンダのパッケージでアップデートする必要があります。OS ベンダが提供する Apache バージョン 2.2.20 または「解決策」で示すソリューションを使用して修正することができます。

1. /usr/local/psa/admin/conf/httpsd.conf ファイルを開きます。
2.  <VirtualHost *:8443> </VirtualHost> 及び <VirtualHost *:8880> </VirtualHost>の2つのセクションの最後に次の行を挿入します。


# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]



この結果、次のようになります。


<VirtualHost *:8443>
...
...
...

# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]

</VirtualHost>

<VirtualHost *:8880>
...
...
...
# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]

</VirtualHost>

解決策

ここでは、この問題の回避策をいくつか説明します。

1) SetEnvIf または mod_rewrite を使用して大量のレンジを検出し、次に Range: header を無視するか、リクエストを拒否する。

オプション 1: (Apache 2.0 および 2.2)

# Drop the Range header when more than 5 ranges.
# CVE-2011-3192
SetEnvIf Range (,.*?){5,} bad-range=1
RequestHeader unset Range env=bad-range

# optional logging.
CustomLog logs/range-CVE-2011-3192.log common env=bad-range


オプション 2: (Apache 1.3 も対象)

# Reject request when more than 5 ranges in the Range: header.
# CVE-2011-3192
#
RewriteEngine on
RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$)
RewriteRule .* - [F]


「5」という値は任意です。 非常にハイエンドな eReader 向けに PDF ファイルを提供するサイトや、複雑な http ベースのビデオストリーミングを使用するサイトなどでは、数十という値にしても問題にならず、むしろこのような値が必要である可能性があります。

2) リクエストフィールドのサイズを数百バイトに制限する。 これにより、レンジヘッダを短く抑えることができますが、巨大な Cookie やセキュリティフィールドなどその他のヘッダが破損する可能性があります。

LimitRequestFieldSize 200

このフィールドで攻撃が発生するため、このフィールドにさらなる制限を加えるか、その他の LimitRequestFields 制限を課すことができます。

参照:http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestfieldsize

3) mod_headers を使用して、レンジヘッダの使用を完全に無効化する。

RequestHeader unset Range

これにより、特定のクライアント(e-Reader や、高度な http ストリーミングビデオ用など)が破損する可能性があるので注意が必要です。

4) レンジヘッダのカウントモジュールを一時的な回避方法として配置する。

http://people.apache.org/~dirkx/mod_rangecnt.c

以下に、一部のプラットフォーム用に事前コンパイルされたバイナリがあります。

http://people.apache.org/~dirkx/BINARIES.txt

5) 以下を含め、議論されているいくつかの最新パッチを適用する。

http://mail-archives.apache.org/mod_mbox/httpd-dev/201108.mbox/%3cCAAPSnn2PO-d-C4nQt_TES2RRWiZr7urefhTKPWBC1b+K1Dqc7g@mail.gmail.com%3e

追加情報

Parallels が CentOS 用の Apache を提供しているのは Parallels Plesk Panel バージョン 10.2 以降です。 他の OS 上の Apache や、これ以前の Parallels Plesk Panel(10.2 より前のバージョン)は Parallels Plesk リポジトリでアップデートされません。 上のいずれかの回避策を適用し、ベンダのリポジトリでネイティブ OS パッケージが提供されるまで待機してください。
Apache アップデートまたは回避策の適用後に、「症状」のセクションに記載した curl コマンドを使用して Apache に脆弱性がないことを確認してください。

29d1e90fd304f01e6420fbe60f66f838 a914db3fdc7a53ddcfd1b2db8f5a1b9c 56797cefb1efc9130f7c48a7d1db0f0c 2a5151f57629129e26ff206d171fbb5f e335d9adf7edffca6a8af8039031a4c7

Email subscription for changes to this article