Des problèmes de sécurité pour WordPress ?

Les failles de sécurité sous WordPress, un problème récurrnt lié à l'outil, aux plugins et extensions mais qui peut être contournable. L'exemple de woocommerce et SEO by Yoast.

Comme j'ai pu l'évoquer à de nombreuses reprises auprès de mes clients et lors de mes formations, WordPress reste un outil formidable pour gérer vos contenus et promouvoir votre activité sur le Web. Il équipe aujourd'hui une part considérable des sites Internet dans le monde, et cette popularité constitue à la fois sa plus grande force et son talon d'Achille. Si vous choisissez comme moi la solution open source issue de WordPress.org, vous serez très vite confronté(e) à la question des failles de sécurité. Non pas parce que l'outil serait mal conçu, mais parce que son succès en fait une cible privilégiée. Je vous propose ici de faire le tour complet du sujet, de comprendre d'où viennent réellement les vulnérabilités et, surtout, de repartir avec une méthode concrète pour dormir tranquille.

Je me souviens d'un épisode marquant survenu le 12 mars 2015 : le plugin SEO by Yoast a exposé la vulnérabilité de près d'un million de sites développés sous WordPress, les rendant sensibles à des injections SQL. Le problème avait été soulevé par Ryan Dewhurst, co-développeur du scanner de vulnérabilité WPScan. Il reposait, une fois de plus, sur la capacité d'un tiers à accéder à des actions réservées à votre compte sans que vous y ayez consenti. WordPress fonctionnant avec une base de données et des connexions par identifiant et mot de passe, le moindre défaut dans la chaîne d'authentification ou de validation des requêtes ouvre une brèche. Voici comment la vulnérabilité était résumée à l'époque :

Comme il n'y a pas de protection anti-CSRF, un attaquant distant non authentifié pourrait utiliser cette vulnérabilité pour exécuter des requêtes SQL arbitraires sur le site web WordPress de la victime en incitant un administrateur, éditeur ou auteur authentifié à cliquer sur un lien spécialement conçu ou à visiter une page qu'il contrôle. Un scénario possible serait un attaquant ajoutant son propre compte administrateur sur le site cible, lui permettant de compromettre l'ensemble du site web.

Cet exemple n'a rien perdu de sa pertinence. Il illustre parfaitement un mécanisme que je vois encore régulièrement à l'œuvre : la vulnérabilité ne vient pas toujours du cœur de WordPress, mais des extensions que vous y ajoutez. Et surtout, l'attaque exploite souvent votre propre confiance, celle de l'utilisateur légitime que l'on manipule pour qu'il effectue une action à son insu.

Failles WordPress : d'où vient le risque Une cible privilégiée par sa popularité, quatre portes d'entrée à surveiller
WordPress popularité = cible Extensions & thèmes Code tiers abandonné ou non mis à jour Cœur non à jour Version ancienne aux failles connues Identifiants faibles Mots de passe devinés, attaques par force brute Hébergement Droits de fichiers et serveur mal réglés Réduire la surface d'attaque mises à jour régulières, comptes robustes et hébergement maîtrisé

Comprendre d'où viennent réellement les failles WordPress

Avant de parler de solutions, je tiens à clarifier une confusion très répandue. Beaucoup de personnes que j'accompagne pensent que « WordPress n'est pas sécurisé ». C'est une simplification trompeuse. Le noyau de WordPress, développé et audité par une communauté immense, est en réalité remarquablement robuste. Les incidents massifs proviennent, dans leur écrasante majorité, de trois sources périphériques : les extensions, les thèmes et les mauvaises pratiques d'administration. Distinguer ces couches est essentiel pour agir efficacement, car on ne protège pas un site en s'attaquant au mauvais maillon.

Les extensions et les thèmes, principaux vecteurs d'attaque

La grande richesse de WordPress tient à son écosystème d'extensions. Vous voulez une boutique ? Vous installez WooCommerce. Un formulaire ? Un référencement optimisé ? Une galerie ? Il existe un plugin pour presque tout. Mais chaque extension ajoute du code tiers à votre site, avec sa propre qualité, son propre niveau de maintenance et ses propres failles potentielles. Dans un article de référence consacré à la faille CSRF (Cross-Site Request Forgery), Julio Potier avait détaillé les conséquences et les risques associés, en soulignant qu'une proportion très importante des extensions présentaient des vulnérabilités sur ce point précis. Le même mois de mars 2015, une autre faille de sécurité, là encore par injection SQL, avait été détectée sur WooCommerce. Deux exemples, deux extensions très populaires, un même type de vulnérabilité.

Les thèmes obéissent à la même logique. Un thème « nulled », c'est-à-dire une version premium piratée récupérée gratuitement sur un site douteux, contient très fréquemment du code malveillant injecté par celui qui l'a redistribué. Je préfère être direct sur ce point : installer un thème ou une extension craqués revient à ouvrir volontairement votre porte d'entrée. L'économie réalisée est dérisoire face au coût d'un nettoyage complet et de la perte de confiance de vos visiteurs.

Les principales familles de vulnérabilités à connaître

Pour dialoguer sereinement avec un prestataire ou comprendre une alerte de sécurité, il est utile de connaître le vocabulaire. Voici les grandes familles d'attaques auxquelles un site WordPress est exposé, avec une explication accessible de chacune.

Type de faille Principe Conséquence possible
Injection SQL (SQLi) L'attaquant insère des requêtes malveillantes dans un champ mal filtré pour dialoguer directement avec la base de données. Vol, modification ou suppression de données, création d'un compte administrateur pirate.
Cross-Site Request Forgery (CSRF) On incite un utilisateur authentifié à déclencher une action à son insu via un lien ou une page piégée. Exécution d'actions sensibles sous l'identité de la victime.
Cross-Site Scripting (XSS) Injection de code JavaScript malveillant affiché ensuite à d'autres visiteurs. Vol de session, redirections, défiguration de pages.
Force brute (brute force) Tentatives massives et automatisées d'identifiants et de mots de passe. Prise de contrôle d'un compte à mot de passe faible.
Élévation de privilèges Un utilisateur de faible niveau obtient des droits qu'il ne devrait pas avoir. Accès administrateur non autorisé.
Fichiers obsolètes / backdoor Exploitation d'anciennes versions ou d'une porte dérobée laissée par une précédente infection. Réinfection récurrente malgré les nettoyages.

Retenez surtout ceci : la plupart de ces attaques ne relèvent pas d'un piratage cinématographique. Ce sont des scripts automatisés qui balayent le Web en continu, à la recherche de la moindre version obsolète ou du moindre mot de passe faible. Vous n'êtes pas ciblé personnellement dans la majorité des cas, vous êtes simplement au mauvais endroit avec une porte entrouverte.

Un problème de sécurité récurrent, mais très largement maîtrisable

Le point que je souhaite marteler, car il change tout dans la manière d'aborder le sujet, est le suivant : dans les deux cas cités plus haut, SEO by Yoast et WooCommerce, une mise à jour a permis de régler le problème très rapidement. Cela démontre la réactivité des auteurs à corriger les failles de leurs outils. C'est une excellente nouvelle, même si l'incident peut légitimement inquiéter les usagers sur le moment.

Ce fonctionnement mérite d'être bien compris. La sécurité d'un logiciel open source ne repose pas sur l'absence de failles, qui est une illusion pour n'importe quel logiciel au monde, mais sur la vitesse à laquelle ces failles sont découvertes, publiées et corrigées. Le plus souvent, et c'est là que réside la vraie bonne nouvelle, les failles sont identifiées par des chercheurs et corrigées avant que les pirates ne les exploitent à grande échelle. Le délai entre la publication d'un correctif et l'exploitation massive de la faille est votre fenêtre de vulnérabilité. Plus vous mettez à jour vite, plus cette fenêtre se referme.

La question n'est donc pas de savoir si votre site WordPress connaîtra un jour une faille, mais de savoir si vous serez à jour le jour où la faille sera rendue publique.

C'est exactement pour cette raison que je répète sans relâche à mes clients de ne jamais rester sur des versions anciennes, qui pourraient être découvertes vulnérables par la suite. Le cas de SEO by Yoast en fut un exemple frappant : seule la version publiée en mars 2015 répondait au problème d'injection SQL, alors même que l'outil avait déjà été téléchargé plusieurs millions de fois. Prévenir en installant systématiquement la dernière version stable de WordPress, de vos thèmes et de vos extensions n'est pas une option, c'est le premier réflexe de sécurité.

Vérifier concrètement la vulnérabilité de votre site

Avant de renforcer un site, encore faut-il savoir dans quel état il se trouve. Je vous invite à ne jamais présumer que « tout va bien » simplement parce que le site s'affiche normalement. Une infection peut rester invisible pour l'internaute pendant des semaines, le temps que le site serve de relais à l'envoi de spam ou à l'hébergement de pages frauduleuses. Voici la démarche de diagnostic que je recommande.

  1. Faites l'inventaire de vos extensions et thèmes. Repérez ceux qui ne sont plus mis à jour depuis longtemps, ceux que vous n'utilisez plus et ceux dont vous ignorez la provenance. Chaque élément inactif reste une surface d'attaque tant qu'il est présent sur le serveur.
  2. Consultez les bases de vulnérabilités publiques. Recouper le nom et la version de vos extensions avec les alertes de sécurité recensées vous indique immédiatement si vous utilisez une version connue comme dangereuse.
  3. Installez un plugin de scan de sécurité réputé. Ces outils analysent vos fichiers, comparent le cœur de WordPress à sa version officielle et signalent les modifications suspectes.
  4. Vérifiez vos comptes utilisateurs. La présence d'un compte administrateur que vous ne reconnaissez pas est un signal d'alerte majeur qui impose une réaction immédiate.
  5. Contrôlez les journaux d'accès de votre hébergeur. Un pic de tentatives de connexion ou des requêtes étranges vers des fichiers PHP inhabituels trahissent souvent une tentative en cours.

Ce diagnostic n'a rien de réservé aux experts. En tant que formateur, je constate que la plupart des propriétaires de site peuvent réaliser eux-mêmes ces vérifications de base, à condition d'y consacrer un moment régulier plutôt que d'attendre l'incident.

Les bonnes pratiques pour sécuriser durablement WordPress

Passons maintenant au cœur du sujet : que faire, concrètement, pour protéger votre site sur le long terme. Je vous propose une liste de mesures ordonnées par priorité. Les premières apportent le plus grand gain de sécurité pour le moindre effort, ce qui doit guider votre calendrier d'action.

  1. Mettez tout à jour, tout le temps. Le cœur de WordPress, les thèmes, les extensions. Activez les mises à jour automatiques au moins pour les correctifs de sécurité mineurs, et planifiez une revue manuelle régulière pour les mises à jour majeures après sauvegarde.
  2. Utilisez des mots de passe forts et uniques. Un mot de passe long, aléatoire et différent pour chaque service, stocké dans un gestionnaire de mots de passe, coupe court à la quasi-totalité des attaques par force brute.
  3. Activez la double authentification (2FA). Même si votre mot de passe fuite, un second facteur rend la connexion pirate quasiment impossible. C'est aujourd'hui l'une des protections les plus rentables.
  4. Supprimez le compte « admin » par défaut. Créez un compte administrateur au nom d'utilisateur non devinable et supprimez l'identifiant générique historique, cible numéro un des scripts automatisés.
  5. Limitez les tentatives de connexion. Bloquez temporairement une adresse IP après plusieurs échecs consécutifs pour neutraliser les attaques répétées.
  6. Effectuez des sauvegardes régulières et externalisées. Une sauvegarde complète et testée, stockée ailleurs que sur le serveur du site, transforme une catastrophe en simple contretemps.
  7. Réduisez la surface d'attaque. Désinstallez, et pas seulement désactivez, toute extension ou tout thème que vous n'utilisez pas. Moins de code, moins de failles potentielles.
  8. Ajustez les droits sur les fichiers. Des permissions correctes empêchent l'écriture arbitraire dans des répertoires sensibles et compliquent la vie d'un attaquant.
  9. Installez un pare-feu applicatif (WAF). Placé devant votre site, il filtre les requêtes malveillantes connues avant même qu'elles n'atteignent WordPress.
  10. Choisissez un hébergement de qualité. Un hébergeur sérieux fournit des versions de PHP à jour, un chiffrement HTTPS, l'isolation des comptes et une surveillance active, socle indispensable de toute la démarche.

Aucune de ces mesures n'est révolutionnaire prise isolément. C'est leur combinaison qui fait la différence. La sécurité fonctionne par couches : si l'une cède, une autre prend le relais. On parle de défense en profondeur, et c'est précisément cet empilement qui décourage la grande majorité des attaques opportunistes. Un attaquant automatisé cherche la cible la plus facile ; dès que votre site oppose plusieurs obstacles, le script passe simplement au suivant, moins bien protégé.

Je vous encourage également à ne pas négliger deux points souvent oubliés. Le premier est le chiffrement HTTPS, désormais indispensable : sans lui, les identifiants transitent en clair et peuvent être interceptés sur un réseau non sécurisé. Le second concerne la version de PHP utilisée par votre hébergement. Faire tourner un site sur une version de PHP en fin de vie, qui ne reçoit plus de correctifs de sécurité, revient à laisser une faille structurelle sous vos fondations, même si WordPress et ses extensions sont parfaitement à jour. Vérifier ce détail auprès de votre hébergeur ne prend que quelques minutes et évite bien des mauvaises surprises.

Le facteur humain, souvent le vrai maillon faible

J'insiste toujours sur un point que la technique tend à faire oublier : la majorité des compromissions que j'observe ne relèvent pas d'un exploit informatique sophistiqué, mais d'une erreur humaine. Un mot de passe réutilisé partout, un ordinateur infecté depuis lequel on se connecte à l'administration, une extension installée sans vérification, un compte donné à un prestataire de passage puis jamais supprimé. Souvenez-vous que la faille CSRF évoquée plus haut n'exploite pas une faiblesse de la machine, mais la confiance d'un administrateur que l'on incite à cliquer. La formation et la vigilance des personnes qui accèdent au site comptent autant que la configuration technique.

Que faire si votre site est déjà compromis

Malgré toutes les précautions, un incident peut survenir. Dans ce cas, l'improvisation est votre pire ennemie. Voici la marche à suivre que je recommande, dans l'ordre.

  • Mettez le site en maintenance pour éviter de propager du contenu malveillant à vos visiteurs et de nuire à votre réputation auprès des moteurs de recherche.
  • Changez immédiatement tous les mots de passe : administration WordPress, base de données, compte d'hébergement et accès FTP.
  • Identifiez le point d'entrée à partir des journaux et de la date des fichiers modifiés, faute de quoi la réinfection est quasi certaine.
  • Restaurez une sauvegarde saine antérieure à l'infection, puis appliquez toutes les mises à jour avant de remettre le site en ligne.
  • Traquez les portes dérobées laissées par l'attaquant, ces fameux fichiers backdoor qui permettent de revenir même après nettoyage.
  • Surveillez le site les semaines suivantes pour vous assurer que l'infection ne réapparaît pas.

Si vous ne vous sentez pas à l'aise avec ces étapes, faites appel à un professionnel plutôt que de risquer une restauration bancale. Un nettoyage incomplet coûte toujours plus cher qu'un nettoyage bien fait du premier coup.

Alors, WordPress pose-t-il vraiment un problème de sécurité ?

Revenons à la question qui a motivé cet article. Le hacking des sites WordPress est presque devenu un sport pour les pirates, dans la mesure où c'est l'outil qui remporte l'un des plus beaux succès du Web. Sa domination attire mécaniquement l'attention, comme la maison la plus visible d'un quartier attire les regards. Faut-il pour autant conclure que WordPress est dangereux ? Ma réponse, après des années de pratique, est nuancée : oui et non, tout dépend de la manière dont vous l'avez déployé et de la manière dont vous exploitez ce fabuleux outil.

Un WordPress installé proprement, tenu à jour, protégé par une authentification solide et sauvegardé régulièrement est parfaitement fiable pour porter l'activité d'une entreprise, y compris une boutique en ligne traitant des transactions. À l'inverse, un WordPress abandonné, truffé d'extensions gratuites jamais mises à jour et administré avec un mot de passe trivial est une bombe à retardement, et cela serait tout aussi vrai avec n'importe quel autre système de gestion de contenu. Le problème n'est donc pas l'outil, mais l'usage que l'on en fait et l'attention qu'on lui porte dans la durée.

Ma conviction, que je transmets aussi bien à mes clients qu'aux personnes que je forme, est que la sécurité n'est pas un état que l'on atteint une fois pour toutes, mais une hygiène que l'on entretient. Quelques réflexes réguliers, une bonne organisation des sauvegardes et un peu de rigueur suffisent à écarter l'immense majorité des menaces. WordPress vous donne les moyens de bâtir un site puissant et pérenne ; à vous de lui offrir le cadre sécurisé qu'il mérite. Si vous souhaitez être accompagné(e) dans cette démarche ou monter en compétence sur ces sujets, c'est précisément le type de mission et de formation que je mène au quotidien, à distance comme dans les Hauts-de-France.

À lire aussi