Attaques DDoS à l’aide de sites WordPress

Au début du mois, le site d’un des clients de la société de sécurité informatique Sucuri a été victime d’une puissante attaque DDoS qui a impliqué plus de 162 000 sites WordPress « populaires et non infectés ». Afin d’amener ces intermédiaires à travailler pour les attaquants, ces derniers ont utilisé le mécanisme de ping back de ce système de gestion du contenu.

Bien que les cas de telles utilisations malveillantes ne soient pas rares, il est fort peu probable que l’équipe de WordPress se décide un jour à supprimer cette vulnérabilité. Le ping back est une option par défaut de ce système de gestion du contenu et non pas un défaut. Par conséquent, c’est aux développeurs de site de trouver des solutions pour éviter les abus potentiels.

Les attaquants ont utilisé plusieurs sites avec la fonction ping back activée ; elle fonctionne selon le protocole d’appel de procédures à distance XML-RPC et simplifie considérablement le processus de création de rétroliens entre des blogs. D’après Daniel Cid, directeur technique chez Sucuri, l’attaque DDoS a été organisée au niveau 7 (applications) et a créé un HTTP flood de plusieurs heures au cours desquelles le serveur attaqué a reçu des centaines de requêtes par seconde.

L’expert signale que ces attaques sont très difficiles à détecter : toutes les requêtes semblent provenir de ressources légitimes. Dans le cas qui nous occupe, c’était vrai. Les quelques 162 000 sites légitimes ont tous envoyé au serveur « des volumes très importants de requêtes aléatoires ». Chaque requête POST contenait une valeur aléatoire, ce qui permettait de contourner le cache et d’invoquer chaque fois le chargement complet de la page. Daniel Cid admet que « Nous aurions certainement pu découvrir bien plus de sites mais nous avons décidé que nous en avions vu assez et nous avons bloqué les requêtes au niveau du pare-feu afin de ne pas remplir les journaux avec des informations inutiles. »

« Le participant à une attaque DDoS contre d’autres sites peut être n’importe quel site WordPress sur lequel la fonction ping back est activée (c’est le cas par défaut). L’attaquant peut impliquer des milliers de sites WordPress très visités et non infectés tout en restant dans l’ombre. Le coupable sera la simple requête de ping back » avertit Daniel Cid.

Les requêtes adressées au fichier xmlrpc.php sont faciles à trouver dans les journaux et Daniel Cid exhorte tous les utilisateurs de WordPress à confirmer que leurs sites ne sont pas impliqués dans des attaques contre leurs confrères. Ces requêtes peuvent ressembler à ceci :

93.174.93.72 – –
[09/Mar/2014:20:11:34 -0400] “POST /xmlrpc.php HTTP/1.0″ 403 4034 “-” “-” “POSTREQUEST:x0Ax0Apingback.pingx0Ax0Ax0Ax0Ahttp://sitecible.domaine/?1698491=8940641x0Ax0Ax0Ax0A x0A votresite.domainex0A x0A x0Ax0Ax0A”

94.102.63.238 – –
[09/Mar/2014:23:21:01 -0400] “POST /xmlrpc.php HTTP/1.0″ 403 4034 “-” “-” “POSTREQUEST:x0Ax0Apingback.pingx0Ax0A x0A x0A http://www.sitecible.domaine/?7964015=3863899x0A x0A x0A x0A x0A votresite.domainex0A x0A x0Ax0Ax0A”

Il est possible également d’utiliser un service de balayage mis au point spécialement par Sucuri. D’ailleurs, après l’attaque contre le client dont le nom n’a pas été dévoilé, les individus malintentionnés ont utilisé la même méthode pour attaquer le blog du célèbre journaliste et chercheur Brian Krebs. D’après Brian Krebs, cette attaque DDoS a impliqué plus de 42 000 sites WordPress, ce qui montre que la campagne lancée par les individus malintentionnés n’est pas encore terminée.

Si vous voyez que votre site est également utilisé dans des attaques DDoS en cours, les experts vous conseillent de créer un filtre API en ajoutant le code suivant au modèle :

add_filter( ‘xmlrpc_methods’, function( $methods ) { unset( $methods[‘pingback.ping’] ); return $methods; } );

Il est déconseillé de désactiver la fonction ping back en supprimant le fichier xmlrpc.php car d’autres mécanismes utilisent également cet API.

Posts similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *