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 :

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 :

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.