Dans les débuts de WordPress, il y a eu des fonctionnalités qui vous permettaient d’interagir avec votre site web à distance. Ces mêmes caractéristiques permettaient de construire une communauté en permettant à d’autres blogueurs d’accéder à votre blog. Le principal outil utilisé à cette fin est « XML-RPC ».
« XML-RPC », ou « XML Remote Procedure Call », donne de supers pouvoirs à WordPress :
- Connexion à votre site avec un SmartPhone
- TrackBacks et Pingbacks sur votre blog
- Utilisation avancée de Jetpack
Mais il y a un problème avec le « XML-RPC », que vous devez résoudre pour préserver la sécurité de votre blog WordPress.
Comment le XML-RPC est utilisé sur WordPress
Retournons dans les premiers jours du « blogging » (bien avant WordPress), la plupart des auteurs sur Internet utilisaient des connexions « dial-up » pour surfer sur le web. Il était difficile d’écrire des articles et de les envoyer en ligne. La solution était d’écrire sur votre ordinateur hors connexion et de « copier/coller » votre article. Les gens qui utilisaient cette méthode, la trouvaient particulièrement pénible, car leur texte avait souvent des codes étrangers, même si le document était enregistré au format HTML.
Blogger a créé une interface de programmation d’application (API) pour permettre à d’autres développeurs d’accéder à des blogs Blogger. Il suffisait de spécifier le nom du site web, ce qui a permis aux utilisateurs de créer des articles hors ligne, puis de se connecter à l’API Blogger par XML-RPC. D’autres systèmes de blogs ont emboîté le pas, et il y avait eu finalement un MetaWeblogAPI qui a standardisé l’accès par défaut.
Après une dizaine d’année, l’essentiel de nos applications sont sur nos téléphones et tablettes. Une des choses que les gens aiment faire avec leurs téléphones est de poster sur leur blog WordPress. En 2008-09, Automattic a été obligé de créer une application WordPress pour à peu près tous les systèmes d’exploitation mobile (même Blackberry et Windows Mobile).
Ces applications ont permis, via l’interface XML-RPC, d’utiliser vos informations d’identification WordPress.com pour vous connecter à un site WordPress où vous avez certains droits d’accès.
Pourquoi doit-on oublier le XML-RPC ?
La compatibilité avec le « XML-RPC » fait partie de WordPress depuis le premier jour. WordPress 2.6 a été publiée le 15 Juillet 2008, et l’activation du « XML-RPC » a été ajoutée aux paramètres WordPress, et définit par défaut sur « Off ».
Une semaine plus tard, Une version de WordPress pour iPhone a été publiée, et il a été demandé aux utilisateurs d’activer la fonctionnalité. Quatre ans après l’application iPhone a rejoint la famille, WordPress 3.5 a activé la fonctionnalité « XML-RPC ».
Les principales faiblesses associées au XML-RPC sont:
- Attaques par force brute: Les attaquants essaient de se connecter à WordPress en utilisant xmlrpc.php avec autant de combinaisons de nom d’utilisateurs et de mot de passe. Il n’y a aucune restriction d’essai. Une méthode dans xmlrpc.php permet à l’attaquant d’utiliser une seule commande (system.multicall) pour deviner des centaines de mots de passe.
- Des attaques de déni de service via le Pingback
Commodité vs sécurité WordPress
Donc, nous y revoilà. Le monde moderne est profondément ennuyeux avec ses compromis.
Si vous voulez vous assurer que personne n’apporte une bombe sur votre bateau, vous tout le faire passer par les détecteurs de métaux. Si vous voulez protéger votre voiture pendant que vous faites les courses, verrouiller les portes et fermer les fenêtres. Vous ne pouvez pas uniquement compter sur le mot de passe du site web pour le protéger (les vitres d’une voiture constitue-elles une protection suffisantes ?), surtout si vous utilisez Jetpack ou des applications mobiles.
Comment désactiver XML-RPC sur WordPress
Donc, vous êtes devenu dépendant de tous ces outils qui sont, à leur tour, dépendent de XML-RPC. Je comprends que vous ne souhaitez vraiment désactiver le « XML-RPC », même pour un petit moment.
Cependant, voici quelques plugins qui vous y aideront :
- Stop XML-RPC Attack : permet uniquement à Jetpack et d’autres outils Automattic pour accéder à xmlrpc.php par .htaccess.
- Control XML-RPC Publishing: rétablit simplement l’ancienne option de publication à distance dans les options d’écriture.
- iThemes Security, Anti-Malware Security and Brute-Force Firewall et All in One WP Security & Firewall: Ces outils de sécurité à usage général, comprennent la protection contre la force brute dans les versions gratuites. Ils observent les tentatives de connexion répétées avec ou sans xmlrpc.php et vous protègent des requêtes qui tentent de briser votre site.
REST (et OAuth) à la rescousse
Maintenant, vous savez peut-être que les développeurs de WordPress se tournent vers la solution REST. Les développeurs de l’équipe de l’API REST ont eu quelques problèmes à se préparer, y compris avec la pièce d’authentification destinée à résoudre le problème XML-RPC. Lorsque cela sera enfin implémenté (actuellement prévue pour WordPress 4.7 à la fin de 2016), vous n’aurez plus à utiliser XML-RPC pour vous connecter avec des logiciels comme JetPack.
Au lieu de cela, vous vous authentifierez via le protocole OAuth. Si vous ne savez pas en quoi consiste un protocole OAuth, rappelez-vous de ce qui se passe lorsque sur un site Web on vous demande de vous connecter avec Google, Facebook ou même Twitter. Généralement sur ces plateformes le protocole utilisé est OAuth.
Test de l’API REST WordPress
Comme je l’ai dit plus tôt, l’API REST n’est pas encore intégré dans le noyau de WordPress, et ne le sera pas pendant des mois. Aujourd’hui, vous pouvez commencer à le tester sur vos environnements d’essai :
L’API Rest sera certainement l’avenir de WordPress. Nous avons d’ailleurs rédigé déjà plusieurs tutoriels sur ce dernier qui vous donneront des idées sur comment vous pouvez commencer à l’implémenter :
- Comment savoir quand faut-il utiliser l’API Rest
- Comment utiliser l’API Rest
- 7 implémentations effectives de l’API Rest
- Comment utiliser l’API HTTP de WordPress
C’est tout pour ce tutoriel. J’espère que vous serez mieux éclairé sur les risques liées à l’utilisation du XML-RPC. N’hésitez pas à nous poser des questions dans le formulaire des commentaires.