WordFence a récemment été ausculté par des hackers et consultants en sécurité. Cela a permis à WordFence d’améliorer son produit suite à des découvertes de failles de sécurité critiques.
La version 5.2.5 et plus récemment 5.2.6 corrigent ces failles. Est-ce fini ? Je ne crois pas … Lisez déjà le changelog de la version 5.2.5 de WordFence.
Hacker ? Consultant ?
La différence entre les deux revient à dire, selon moi, “Black Hat” ou “White Hat” ou encore “Grey Hat”. Comme dans le SEO, les Blacks Hats sont les personnes qui ne sont pas là pour respecter les règles ou le travail des autres.
Lorsqu’un hacker découvre des failles, plusieurs solution s’offrent alors à lui :
- Il ne dit rien à personne et tente d’exploiter le plus et le plus longtemps possibles ces failles dans le but de s’en servir pour lui (vol de données à revendre, stockages de virus, etc),
- Il ne dit rien à l’auteur du plugin mais balance les infos sur reddit ou sur son blog ou dans des boards undergrounds de hackers, là où d’autres tenteront alors aussi d’exploiter les failles à plus grande échelle, plus on est de fous plus on rit. Dans ce cas, le fait que beaucoup de monde soit au courant, il y a de fortes chances qu’un Grey Hat soit de la partie ou simplement qu’un utilisateur tombant sur ces informations décide d’alerter lui même l’auteur. Merci à lui.
- Il signale les failles à l’auteur et dans le même temps balance sur son blog et les sites de sécurité les failles en mode 0-day, mieux mais pas top.
- Il signale les failles à l’auteur, tout 2 se mettent d’accord sur un temps raisonnable pour patcher, puis seconde attente le temps que les utilisateurs aient le temps de se tenir à jour, puis par la suite, il informe depuis son blog et sites de sécurité les failles qui ont donc déjà été patchées.
Ce dernier cas est l’orientation de SecuPress, il est aussi appelé “Responsible Disclosure” ou “Divulgation Responsable”, c’est selon moi la méthode la moins dangereuse pour les utilisateurs. Je dis “moins” car les failles restent exploitables sur les sites ne se tenant pas à jour.
Ne vaudrait-il pas mieux ne rien dire et laisser passer ça discrètement ?
Impossible ! Le plugin ayant été mis à jour, des personnes (comme moi) regarderont le changelog ou feront directement le différentiel des modifications afin de comprendre le pourquoi de ce cette mise à jour.
Il y aura alors forcément des gens au courant et le bruit se répandra. Aussi, pourquoi vouloir cacher les améliorations de son produit ? Une honte d’avoir fait une erreur ? Faute avouée, à moitié pardonnée non !? Dites ce que vous avez amélioré, ça ne peut qu’être bien en votre faveur.
Le plugin RevSlider qui a provoqué de nombreuses attaques et sites piratés a tenté de faire taire sa faille, corrigée en février 2014, résultat : en août 2014 les vagues ont déferlées …
Je reviens un peu sur le cas 1 où le hacker ne dit rien à personne. Le plugin MailPoet a aussi provoqué quelques autres attaques, mais les failles n’ont été découvertes qu’en Juillet 2014. Hors, j’ai trouvé des traces de ces hacks chez un client, datant de novembre 2013. Il y avait donc bel et bien au moins une personne qui avait trouvé ces failles et s’est tût.
Quelles attaques ?
La version 5.2.5 corrige principalement 4 failles critiques découvertes par SecuPress, les voici maintenant en détail, ces failles étant patchées depuis plusieurs semaines (le 20/09/2014) je peux maintenant avec l’accord de l’auteur du plugin, le très sympathique Mark Maunder.
XSS
L’adresse IP n’est pas correctement analysée (par parsing) :
On peut alors modifier les headers des requêtes HTTP en utilisant une fausse adresse IP comme ceci :
999.999.999.999<script>alert(/SecuPress/);</script>
Le code HTML et JS code sera affiché en brut dans le back-office car l’IP n’étant pas correcte WordFence l’affiche en alerte.
Attack ByPass
Une fois de plus, en modifiant son IP, il suffit de mettre une IP locale pour être ignoré de WordFence, pensant que vous faites des tests locaux
127.0.0.1
Avec cette IP, je peux maintenant bruteforcer une page login d’un site, je ne serais pas bloqué ni loggé.
Block Country ByPass
Encore une fois, l’IP peut donc simplement être modifiée pour se faire passer pour un autre pays, si vous faites parti d’un pays interdit de visite, modifier son IP avec un pays autorisé suffit à bluffer le plugin.
Anti DDoS ByPass
La description du plugin dit que les fichiers de cache servis lors d’une attaque DDoS servent à sauver le site de cette attaque.
Ce qui n’est pas totalement faux, mieux vaut donner X fois la même page en cache plutôt que de faire appel à SQL et PHP à chaque fois.
Pour rappel, une DDoS est une attaque ayant pour but de faire tomber le serveur et ses services (apache, php, sql), lui manger toutes ses ressources afin de le bloquer.
Le hacker lance alors 5000 requêtes par seconde à la fois sur votre site jusqu’à épuisement du serveur, et si vous n’avez pas de cache, aïe, si vous en avez un, comme le plugin de cache WP Rocket, alors ça aidera à passer le cap, mais rien ce ne sera pas suffisant, j’en ai peur.
Donc, dans le code du plugi on peu lire :
if($_SERVER['REQUEST_METHOD'] != 'GET'){ return false; } //Only cache GET's
Ce qui veut dire que je peux faire des attaques DDoS via la méthode HTTP POST, je ne passe pas dans le cache, donc l’argument du cache contre les DDoS tombe à l’eau.
if(isset($_SERVER['QUERY_STRING']) && strlen($_SERVER['QUERY_STRING']) > 0 && (! preg_match('/^d+=d+$/', $_SERVER['QUERY_STRING'])) ){ //Don't cache query strings unless they are /?123132423=123123234 DDoS style.
Aussi ce code te ses commentaires montrent que les requêtes en méthode HTTP GET contenant un paramètre ne seront alors pas dans le cache, ce qui est normal, tous les plugins de cache font ça.
Ce qui signifie que le fait d’ajouter un simple paramètre dans mes URLs pour le DDoS passeront sans soucis hors du cache de WordFence, que ce soit le cache normal ou son FalconCache (= GZIP)
Mot de la fin
Il faut savoir qu’il est simple de modifier les headers des requêtes, des addons gratuits pour vos navigateurs existent à la pelle, leur utilisation est simple.
Je ne peux que vous conseiller de vous tenir à jour, je ne peux pas vous affirmer que tout est corrigé, juste que plusieurs patchs ont été fait.