Une faille de sécurité permet de planter tout site WordPress

Voici le genre de choses qu’on aime pas lire quand on gère une activité en ligne via WordPress, le logiciel de création de site le plus populaire au monde.

Une faille de sécurité permet de planter tout site WordPress

Et pourtant, il est bon de le savoir. Une vulnérabilité de déni de service (DoS) de niveau application simple mais sérieuse a été découverte dans la plate-forme WordPress  et qui pourrait permettre à n'importe qui (une façon de parler) de planter la plupart des sites Web WordPress.

Même avec un simple ordinateur, sans utiliser une quantité importante de bande passante, comme requis dans les attaques DDoS au niveau du réseau pour atteindre le même objectif.

Même si, selon The Hacker News, l’organisation WordPress a nié corriger la question, la vulnérabilité (CVE-2018-6389) reste non patchée et affecte presque toutes les versions de WordPress livrées depuis ces 9 dernières années, y compris la dernière version stable de WordPress (version 4.9.2).

Découverte par Barak Tawily, chercheur israélien en sécurité informatique, la vulnérabilité réside dans la façon dont le fichier "load-scripts. php", un script intégré dans le CMS WordPress, traite les requêtes définies par l'utilisateur.

Pour rappel, le fichier “load-scripts.php” a seulement été conçu pour les Administrateurs pour aider un site Web à améliorer les performances et le chargement plus rapide de la page en combinant (du côté serveur) plusieurs fichiers JavaScript en une seule demande.

Cependant, pour faire fonctionner "load-scripts.php" sur la page de connexion admin (login.php que vous avez certainement modifié) avant de se connecter, les auteurs de WordPress n'ont pas conservé toute l'authentification en place, ce qui rend la fonctionnalité éventuellement accessible à tous.

Selon les plugins et les modules que vous avez installés, le fichier “load-scripts.php” appelle sélectivement les fichiers JavaScript requis en passant leurs noms dans le paramètre "Load", séparé par une virgule, comme dans l'URL ci-dessous :

https://your-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

Images via TheHackerNews.com

Lors du chargement du site Web, le fichier “load-scripts.php” (mentionné dans l’entête de la page) essaie de trouver chaque nom de fichier JavaScript donné dans l'URL, pour ajouter leur contenu dans un seul fichier, avant de le renvoyer au navigateur Web de l'utilisateur.


Comment fonctionne l’attaque Dos de WordPress ?


Selon le chercheur, on peut tout simplement forcer “load-scripts php” à appeler tous les fichiers JavaScript possibles (par exemple 181 scripts) en une seule fois en passant leurs noms dans l'URL ci-dessus.

Ce qui rend le site ciblé un peu lent en consommant beaucoup de CPU et la mémoire du serveur.

D’après le chercheur Tawily :

Il existe une liste bien définie ($WP _scripts), qui peut être demandée par les utilisateurs dans le cadre du paramètre Load [ ].

Si la valeur demandée existe, le serveur effectuera une action de lecture d'I/O (pour Entrée (In) et Sortie (Out)) pour un chemin d'accès bien défini associé à la valeur fournie par l'utilisateur.

Bien qu'une seule demande ne serait pas suffisante pour planter l'ensemble du site Web WordPress pour ses visiteurs, Tawily a utilisé une preuve de concept (POC) via un script Python, doser.py, qui fait un grand nombre de demandes simultanées à la même URL dans une tentative d'utiliser autant de ressources CPU serveurs que possibles de la cible pour la bloquer.

Le site The Hacker News dit avoir vérifié l'authenticité de l'exploit DoS qui a planté avec succès l'un de ses sites Web de démo WordPress fonctionnant sur un serveur VPS de taille moyenne.

Le chercheur Tawily précise à nouveau :

Il est temps de mentionner à nouveau que Load-scripts.php ne nécessite aucune authentification, un utilisateur anonyme peut le faire.

Après environ 500 requêtes, le serveur n'a plus répondu du tout, ou a retourné des erreurs 502/503/504.


Toutefois, l'attaque d'une seule machine, avec une connexion de 40 Mbps, n'était pas suffisante pour planter un autre site de démonstration WordPress fonctionnant sur un serveur dédié avec une puissance de traitement élevée et de mémoire.

Mais cela ne signifie pas que la faille n'est pas efficace contre les sites Web WordPress fonctionnant sur un serveur lourd, comme l'attaque au niveau de l'application exige généralement beaucoup moins de paquets et de bande passante pour atteindre le même objectif.

A savoir, planter un site ou blog WordPress de sorte qu’il ne soit plus accessible nulle part ailleurs.

Ainsi, les attaquants avec plus de bande passante ou quelques bots peuvent exploiter cette faille pour cibler de grands sites Web WordPress et populaires aussi.

Bien entendu, le chercheur dit avoir rapporté la faille de sécurité à l’équipe de WordPress via la plate-forme HackerOne.

Cependant, l'organisation aurait refusé de reconnaître la question, en disant que “ce genre de bug devrait vraiment être atténué à l'extrémité du serveur ou au niveau du réseau plutôt qu’au niveau de l'application" qui est en dehors du contrôle de WordPress.

La vulnérabilité semble être grave parce que WordPress aurait maintenant 60% de part de marché des sites Web CMS, ce qui place des millions de sites Web vulnérables accessibles aux pirates qui peuvent à tout moment décider de les rendre indisponibles pour leurs utilisateurs légitimes.

Pour les sites Web qui ne peuvent pas se permettre des services offrant une protection DDoS contre les attaques de la couche application, le chercheur a fourni une version modifiée de WordPress, qui comprend l'atténuation de cette vulnérabilité.

Mais, il est recommandé d’attendre une version officielle de WordPress qui corrige cette vulnérabilité.

On peut, dans cette attente, si on a des compétences techniques, utiliser un script bash simple, fourni par le chercheur Tawily, et qui corrigerait aussi la faille de sécurité, au cas où vous avez déjà installé WordPress.