Apache Killer (CVE-2011-3192) 対策 for CentOS 5.6

検証

Exploit Code は Apache Killer (killapache.pl) よりも apachepartial.pl のほうが Perl モジュール Parallel::ForkManager  の追加が要らないので楽ちん。

Usage: ./apachepartial.pl <host> [path] [parallel reqs] [loops] [port] 
perl apachepartial.pl pooh.gr.jp /robots.txt 60 0 80

pooh.gr.jp は結構頑丈だったので 60 並列でやっと CPU idle 30% まで減らせた。
path で指定するコンテンツを 1300 バイト以上にすると効果的になる。robots.txt はちっさいので攻撃効果が低くなったみたい。

対策

対策を実行したら、まずサービスに影響がないかを確認する。その後もう一度 Exploit Code を実行して CPU が消費されないことを確認する。

{
    echo -e '# Drop the Range header when more than 5 ranges.'
    echo -e '# CVE-2011-3192'
    echo -e 'SetEnvIf Range (?:,.*?){5,5} bad-range=1'
    echo -e 'RequestHeader unset Range env=bad-range'
    echo -e ''
    echo -e '# We always drop Request-Range; as this is a legacy'
    echo -e '# dating back to MSIE3 and Netscape 2 and 3.'
    echo -e 'RequestHeader unset Request-Range'
    echo -e ''
    echo -e '# optional logging.'
    echo -e 'CustomLog logs/range-CVE-2011-3192.log common env=bad-range'
    echo -e 'CustomLog logs/range-CVE-2011-3192.log common env=bad-req-range'
} >/etc/httpd/conf.d/range-CVE-2011-3192.conf
/sbin/service httpd configtest && /sbin/service httpd graceful

 

切り戻し

パッチが出たら … というかパッチの当たったパッケージが提供されたら (… CentOS 大丈夫かな?) このワークアラウンドは要らなくなるので削除する。ログには攻撃元 IP アドレスが記録されているので確認してから削除する。

rm -f /etc/httpd/conf.d/range-CVE-2011-3192.conf
/sbin/service httpd configtest && /sbin/service httpd graceful
rm -i /var/log/httpd/range-CVE-2011-3192.log*

 

参考文書

タイトルとURLをコピーしました