Chez Imagile nous utilisons WordPress pour développer toutes sortes de sites et applications web. Si les avantages de cet outil sont multiples, sa popularité – 30% des sites l’utilisent ! – en fait une cible privilégiée. Il est donc primordial de suivre la publication des failles de sécurité et d’y réagir rapidement.
Au premier abord, on peut être tenté de se demander pourquoi son site intéresserait un pirate, surtout si c’est un site marketing n’hébergeant pas de données sensibles. Il se trouve qu’il existe aujourd’hui de nombreux moyens de profiter d’un site pour des raisons malveillantes :
- Redirection vers un autre site douteux.
- Hébergement de contenu pour du spam SEO. Le pirate souhaite soit nuire à un site d’un concurrent du pirate, soit ajouter des liens vers un de ses propres sites.
- Insertion d’un script de minage de cryto-monnaie comme le Bitcoin. Cela permet au pirate d’utiliser la puissance de l’ordinateur des visiteurs du site pour s’enrichir en crypto-monnaie.
- Défacement pour nuire au propriétaire du site.
- Vol de données : utilisateurs du site, mots de passe, liste de clients…
- Hébergement de pages de phishing pour voler des coordonnées bancaires ou autres.
Les raisons sont nombreuses et l’imagination des pirates est manifestement sans limite. Tout site est une cible potentielle, quelle que soit sa taille.
Les failles viennent principalement de trois composantes de l’écosystème WordPress : le cœur de WordPress lui-même, les plugins et les thèmes. Il existe des sites comme CVE Details ou WPScan Vulnerability Database qui recensent ces failles, mais consulter manuellement ces informations est bien trop chronophage : à ce jour, 11636 failles concernant des milliers de plugins et thèmes sont recensées sur WPScan Vulnerability Database.
Nous n’utilisons pas de thèmes du marché, nous préférons construire un thème sur-mesure pour chaque site afin d’avoir la maîtrise complète sur le code et les performances. Nous limitons également notre utilisation de plugins à ceux que nous jugeons apporter une réelle valeur ajoutée. La surface d’exposition à des failles est ainsi grandement réduite, mais il subsiste néanmoins la possibilité qu’une faille soit découverte sur WordPress ou l’un des plugins que nous utilisons. Il nous faut donc pouvoir être averti rapidement quand la faille est publiée afin de pouvoir mettre à jour le code.
Il existe pour cela un outil très pratique appelé WPScan.
Cet outil en ligne de commande permet de scanner un site pour y détecter des failles recensées dans la base de données WPScan Vulnerability Database. Il suffit de lui indiquer l’adresse du site et les vérifications que l’on souhaite faire et il produit un rapport listant tout ce qu’il a pu détecter.
Il est également capable de détecter des fuites d’informations causées par le fonctionnement par défaut de WordPress. Par exemple, un WordPress sans configuration spécifique expose via l’API la liste de tous les utilisateurs enregistrés. Cette technique est utilisée par des pirates pour tenter des attaques de connexion par force brute. De plus, si par malheur l’un des utilisateurs a réutilisé un mot de passe d’un autre site déjà piraté pour son compte WordPress, son compte peut alors être facilement usurpé.
WPScan permet d’automatiser une grande partie du travail car il détecte les plugins utilisés et la version de WordPress et les compare à sa base de données de failles. Il n’y a plus qu’à regarder si une faille est trouvée et la corriger.
Cette méthode montre cependant vite ses limites quand on gère un grand nombre de sites : il faut lancer manuellement la commande pour chaque site, puis interpréter les résultats pour savoir si des corrections sont nécessaires. Et comme tout opération manuelle, elle a le défaut d’être oubliable…
L’étape suivante est donc d’automatiser ce processus.
Nous voulions avoir un outil fonctionnant de manière indépendante et capable de nous avertir si une faille était détectée sur l’un des sites dont nous nous occupons. Pour cela, nous avons développé un outil qui :
- lance WPScan sur chacun des sites
- analyse les résultats pour détecter la présence d’utilisateurs ou de failles
- poste le compte-rendu sur un canal de notre chat interne en cas de faille
Ainsi nous sommes avertis dès qu’un site présente une faille ou un oubli de configuration. Nous pouvons alors réagir rapidement et procéder à sa correction. Nous avons pour cela développé un script de mise à jour automatique qui nous permet en une ligne de commande de mettre à jour les plugins et WordPress.
Ces outils nous font gagner du temps, nous permettent d’être sereins sur la sécurité des sites que nous gérons et de nous consacrer pleinement à la résolution des problématiques métier.