XML-RPC est un protocole permettant à des applications externes d’interagir avec WordPress à distance : publication d’articles depuis une application mobile, synchronisation avec des services tiers comme Jetpack, ou gestion des pingbacks et trackbacks entre sites. Le point d’entrée technique est le fichier xmlrpc.php, présent par défaut sur toute installation WordPress.
Pourquoi xmlrpc.php est une cible fréquente
Ce protocole présente une particularité exploitée par les attaquants : sa méthode system.multicall permet de regrouper de nombreuses requêtes d’authentification en un seul appel HTTP. Un attaquant peut ainsi tester des centaines de combinaisons de mots de passe en quelques requêtes seulement, rendant une attaque par force brute classique bien plus rapide et plus difficile à détecter dans les journaux d’accès qu’une attaque directe sur wp-login.php.
Le système de pingback peut également être détourné pour amplifier une attaque DDoS vers un site tiers, en utilisant votre serveur comme relais involontaire.
Faut-il désactiver XML-RPC
Si aucun service utilisé (application mobile officielle WordPress, Jetpack, intégration tierce) ne dépend de XML-RPC, la désactivation complète élimine purement et simplement cette surface d’attaque. À l’inverse, si un service actif en dépend, une restriction plus fine – blocage de system.multicall uniquement, ou limitation d’accès par IP – permet de conserver la fonctionnalité nécessaire sans l’exposition la plus risquée.
Comment sécuriser XML-RPC concrètement
- Désactiver complètement le protocole si aucun service ne l’utilise, via un plugin dédié ou un filtre WordPress
- Bloquer l’accès au niveau serveur (règle .htaccess ou configuration Nginx) si une désactivation applicative n’est pas souhaitée
- Surveiller les journaux d’accès pour repérer un volume anormal de requêtes vers
xmlrpc.php - Combiner avec un WAF qui filtre spécifiquement les abus connus de ce protocole