Apacheの広範囲なバージョンにセキュリティーホールを公開、その対策
Apacheほぼすべてのバージョンにセキュリティホールが見つかる
多くの方々が利用していると思われるApacheサーバーですが、大きなセキュリティーホールが発見されました
もちろん当サイトも例外ではなく、Apacheを利用させていただいて運営しております。
抜本的な修正は、最新版の Apahce バージョン 2.2.20 にアップグレードすること。
しかし、それが容易に出来る方ばかりじゃないと思います。
ソースコードからコンパイルして使って居る方や、ソースに手を入れて使用している方なんかは結構厳しいです。
そんな方にもとりあえずの対策もあるようですので、下に載せておきますので是非対策を取っておいてください。
DoS攻撃につながる問題点
RangeヘッダーおよびRequest-Rangeヘッダーに細工を施した内容をサーバーに対して送ることで、サーバーのシステムリソースが大量に消費され、サービスが提供不能な状態に陥る可能性があります。
もちろんサーバー自体の操作も困難になるため、この攻撃を受けた場合はおそらく一度システムリブートが必要になると思われます。
しかも攻撃用のツール(Apache Killer)も既に存在するようで、 ゼロデイ攻撃も確認されているとのことです。
Rangeヘッダーは、コンテンツの一部分を取得したい場合に、その範囲を指定するために使うヘッダー情報です。
対象の範囲
実はこれが一番問題で、今回対象となるApacheはほぼ稼働しているサーバーのすべてのバージョンが対象となります。
具体的には Apache 1.3系、2.0系、2.2系のすべての系統のバージョンにおいて脆弱性があります。
CentOS、RHEL、Fedoraなどで標準に組み込まれているバージョンすべてにおいてこの脆弱性が存在します。
とりあえずの対策
上でも書きましたが、抜本的な修正は2.2.20にバージョンを上げることです。
しかし現在のところCentOS5.5では、yumでのバージョンアップはなされていません。
2011年9月15日追記
yumでのバージョンアップか可能になりました。
対応バージョンは、2.2. 3 53.el5以降となります。
対策記事:Apacheセキュリティホール対策アップデート yum対応可能
そんなことから自分で2.2.20のrpmパッケージをつくってバージョンをアップさせている方もいらっしゃるようです。
Apache 2.2.20をtar.gzからrpmにしてインストールしてみたの巻
ただバージョンアップが容易に出来ない方のために、httpd.confに設定を記述することで対処することも出来る方法もあります。
Advisory: Range header DoS vulnerability Apache HTTPD 1.3/2.x (CVE-2011-3192)
こちらはhttpd.confに記述させればとりあえずの対策が出来るのでまだの方はすぐにでも対処されることをおすすめいたします。
Apache 2.2系
httpd.confに下記を追加してください。
# CVE-2011-3192 SetEnvIf Range (?:,.*?){5,5} bad-range=1 RequestHeader unset Range env=bad-range # We always drop Request-Range; as this is a legacy # dating back to MSIE3 and Netscape 2 and 3. RequestHeader unset Request-Range |
併せてログを記述するには下記も追記してください。
# optional logging. CustomLog logs/range-CVE-2011-3192.log common env=bad-range CustomLog logs/range-CVE-2011-3192.log common env=bad-req-range |
Apache 1.3系 2.0系
httpd.confに下記を追加してください。
# Reject request when more than 5 ranges in the Range: header. # CVE-2011-3192 # RewriteEngine on RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$) # RewriteCond %{HTTP:request-range} !(bytes=[^,]+(?:,[^,]+){0,4}$|^$) RewriteRule .* - [F] # We always drop Request-Range; as this is a legacy # dating back to MSIE3 and Netscape 2 and 3. RequestHeader unset Request-Range |
当面はこれで対応するのがお手軽ですが・・・
サーバー止められるのも面倒なのでCentOSのyumにバージョンアップが早々に出てくると良いのですね。
関連のありそうなエントリ