Pourquoi le malware revient-il sans cesse sur mon site WordPress ?

Votre site WordPress a été nettoyé mais le malware est revenu ? Découvrez pourquoi les réinfections se produisent, des points d’entrée restés ouverts aux portes dérobées cachées, et comment briser le cycle.

Ouvrir un ticket de support

Votre site a été piraté, quelqu’un l’a nettoyé, et pendant quelques jours ou quelques semaines tout semblait normal. Puis la même redirection, les mêmes pages de spam ou les mêmes fichiers suspects sont réapparus.

C’est l’une des situations les plus frustrantes pour le propriétaire d’un site. On peut avoir l’impression que le nettoyage n’a servi à rien, ou que l’attaquant est impossible à arrêter.

Dans la plupart des cas, un malware qui revient sans cesse signifie que le nettoyage a supprimé les symptômes visibles mais pas la cause. Quelque chose permet encore à l’attaquant de revenir, ou quelque chose resté sur le serveur recrée l’infection.

La bonne nouvelle, c’est qu’une réinfection a généralement une raison identifiable. Une fois cette raison trouvée et traitée, le cycle s’arrête normalement.

Ce guide explique les raisons les plus courantes du retour d’un malware, les vérifications que vous pouvez faire sans risque, ce qu’il faut éviter et quand faire appel à un spécialiste.

Que signifie un malware qui revient sans cesse ?

Une infection WordPress comporte généralement trois parties :

  • le point d’entrée, la faiblesse que l’attaquant a utilisée pour entrer
  • la persistance, ce qui lui permet de revenir ou maintient le code en vie
  • la charge utile, les dégâts visibles, comme des pages de spam, des redirections ou des scripts injectés

Beaucoup de nettoyages se concentrent sur la charge utile, car c’est ce que voient les visiteurs, les clients et Google. La supprimer redonne au site une apparence normale. Mais si le point d’entrée ou le mécanisme de persistance subsiste, la charge utile revient, parfois en quelques heures.

La question à se poser n’est donc pas « comment supprimer de nouveau le malware ? » mais « qu’est-ce que le dernier nettoyage a laissé derrière lui ? ».

Pourquoi le malware revient-il ?

Il y a souvent plusieurs raisons en même temps.

Le point d’entrée n’a jamais été fermé

Si l’attaquant est entré par une faiblesse, celle-ci est peut-être toujours là. Exemples courants :

  • un plugin ou un thème vulnérable qui n’a pas été mis à jour, ou qui n’est plus maintenu
  • un plugin ou un thème nulled ou piraté, téléchargé depuis une source non officielle, qui peut contenir du code malveillant dès le départ
  • des identifiants volés, comme un mot de passe WordPress, d’hébergement, SFTP ou de base de données qui n’a pas été changé
  • un plugin abandonné, désactivé mais toujours présent sur le serveur, dont les fichiers restent accessibles
  • une ancienne copie du site dans un sous-dossier, avec des logiciels obsolètes et vulnérables

Désactiver un plugin n’équivaut pas à le supprimer. Dans de nombreux cas, ses fichiers peuvent toujours être appelés directement.

Des portes dérobées ont été laissées en place

Les attaquants comptent rarement sur un seul moyen d’accès. Après la première compromission, ils installent souvent des portes dérobées (backdoors) : de petits morceaux de code qui leur permettent d’exécuter des commandes ou de téléverser des fichiers quand ils le veulent.

Les portes dérobées peuvent être :

  • cachées dans des fichiers aux noms d’apparence anodine
  • ajoutées à des fichiers légitimes de plugins ou de thèmes
  • stockées dans le dossier uploads, qui ne devrait contenir que des médias
  • placées dans le dossier mu-plugins, qui se charge automatiquement et n’apparaît pas dans la liste normale des plugins
  • stockées dans la base de données, par exemple dans une option ou un widget

Un nettoyage qui supprime le malware visible mais oublie une seule porte dérobée laisse la porte ouverte.

D’autres sites du même compte d’hébergement sont infectés

Si plusieurs sites partagent un même compte d’hébergement, l’infection de l’un d’eux peut souvent atteindre les autres. Nettoyer uniquement le site qui présente les symptômes laisse la source intacte.

C’est très fréquent avec d’anciens sites de test, des microsites oubliés ou une ancienne version du site conservée « au cas où ».

Des tâches planifiées recréent l’infection

WordPress dispose de son propre système de planification, appelé WP-Cron, et les serveurs ont leurs propres tâches planifiées (cron jobs). Un attaquant peut ajouter une tâche qui télécharge ou réécrit régulièrement du code malveillant.

Si la tâche n’est pas supprimée, le malware peut réapparaître à intervalles réguliers, ce qui est souvent un indice utile.

Un compte compromis est toujours actif

L’attaquant peut encore disposer :

  • d’un compte administrateur dans WordPress, éventuellement avec un nom d’apparence ordinaire
  • d’une session de connexion active qui n’a jamais été fermée
  • d’un accès au panneau de contrôle de l’hébergement, au SFTP ou à la base de données
  • d’un accès à un compte e-mail utilisé pour réinitialiser les mots de passe
  • de la propriété du site dans Google Search Console

Si l’un de ces accès a été oublié, l’attaquant peut simplement se reconnecter. Consultez que faire face à un administrateur inconnu pour plus de détails.

Une sauvegarde infectée a été restaurée

Restaurer une sauvegarde est une réponse courante à un piratage. Mais si la sauvegarde a été faite après le début de la compromission, elle contient le même malware ou la même porte dérobée.

Les infections peuvent rester silencieuses pendant des semaines avant de montrer des symptômes visibles : une sauvegarde faite « avant que nous remarquions le problème » n’est donc pas forcément saine.

Quelles sont les premières vérifications sans risque ?

Ces vérifications vous aident à rassembler des informations sans rien modifier.

Notez le schéma

Notez :

  • quand le malware est apparu pour la première fois
  • quand il a été nettoyé, et par qui
  • quand il est revenu
  • s’il est revenu sous la même forme ou sous une autre
  • s’il semble revenir à intervalles réguliers

Un schéma régulier suggère une tâche planifiée. Un retour rapide après un nettoyage suggère une porte dérobée ou un compte actif. Un retour après une longue période suggère un point d’entrée réutilisé.

Demandez ce que comprenait le nettoyage précédent

Si un hébergeur, une agence ou un service de sécurité a nettoyé le site, demandez-lui :

  • ce qu’il a supprimé
  • s’il a trouvé comment l’attaquant était entré
  • s’il a vérifié les autres sites du même compte
  • si les mots de passe et les clés de sécurité ont été changés
  • s’il a vérifié les tâches planifiées et les comptes utilisateurs

Les lacunes dans les réponses orientent souvent vers le problème.

Vérifiez les utilisateurs et les plugins dans le tableau de bord

Dans WordPress, consultez Users → All Users et filtrez par Administrator. Recherchez les comptes que vous ne reconnaissez pas.

Consultez ensuite Plugins → Installed Plugins (Extensions → Extensions installées). Notez les plugins que vous ne reconnaissez pas, ceux qui n’ont pas été mis à jour depuis longtemps et ceux installés en dehors du répertoire officiel sans licence valide.

Ne supprimez rien pour l’instant. Notez ce que vous voyez.

Interrogez l’hébergeur

Votre hébergeur peut être en mesure de vous dire :

  • si un malware est toujours détecté
  • quels autres sites partagent le compte
  • s’il existe des tâches planifiées au niveau du serveur
  • s’il y a eu des connexions suspectes au panneau de contrôle ou au SFTP
  • si des logs serveur sont disponibles pour la période de l’attaque

Que pouvez-vous faire maintenant sans risque ?

Certaines mesures réduisent le risque sans détruire de preuves :

  • changer le mot de passe de votre propre compte WordPress et de votre compte d’hébergement, avec des mots de passe uniques
  • activer l’authentification à deux facteurs lorsqu’elle est disponible
  • vérifier que le compte e-mail utilisé pour WordPress et l’hébergement est sécurisé
  • cesser de restaurer des sauvegardes tant qu’on ne sait pas laquelle est saine
  • suspendre la publicité qui envoie du trafic vers le site, si les visiteurs sont redirigés

Changer tous les mots de passe est surtout efficace une fois le point d’entrée trouvé. Sinon, les nouveaux mots de passe risquent d’être exposés de la même façon.

Que faut-il éviter ?

Évitez de :

  • répéter le même nettoyage en espérant un résultat différent
  • supprimer des fichiers au hasard
  • désactiver les plugins suspects au lieu de les supprimer
  • restaurer la sauvegarde la plus récente sans la vérifier
  • nettoyer un site alors que les autres du même compte restent intacts
  • installer plusieurs plugins de sécurité à la fois
  • laisser en place des administrateurs inconnus « pour plus tard »
  • utiliser des plugins et des thèmes nulled ou piratés

Comment briser le cycle ?

Une réponse complète comprend généralement :

  1. conserver une copie des fichiers, de la base de données et des logs actuels
  2. trouver le point d’entrée, à l’aide des logs, des dates des fichiers et des vulnérabilités connues
  3. remplacer le cœur de WordPress, les plugins et les thèmes par des copies neuves provenant de sources officielles
  4. rechercher des portes dérobées dans les fichiers restants, les uploads et la base de données
  5. vérifier chaque site du compte d’hébergement
  6. supprimer les comptes inconnus et les tâches planifiées malveillantes
  7. changer tous les mots de passe et les clés de sécurité de WordPress
  8. supprimer les plugins et thèmes inutilisés ainsi que les anciennes copies du site
  9. surveiller le site après le nettoyage pour confirmer que l’infection n’est pas revenue

L’étape 9 compte. Un nettoyage n’est confirmé que lorsque le site reste sain dans la durée.

Quand demander de l’aide ?

Demandez de l’aide lorsque :

  • le malware est revenu au moins une fois
  • vous ne savez pas comment l’attaquant est entré
  • plusieurs sites partagent le même compte d’hébergement
  • le site gère des paiements, des abonnements ou des données personnelles
  • Google ou votre hébergeur a signalé le site
  • vous n’avez pas de sauvegarde fiable

Une infection récurrente est le signe que quelque chose de précis a été oublié. Le trouver demande souvent l’accès aux logs et l’expérience des schémas utilisés par les attaquants.

Comment D4Hub peut vous aider

D4Hub peut :

  • examiner ce que le nettoyage précédent a couvert et ce qu’il n’a pas couvert
  • identifier le point d’entrée à l’aide des logs, de l’analyse des fichiers et des vulnérabilités connues
  • rechercher des portes dérobées dans les fichiers, les uploads, mu-plugins et la base de données
  • vérifier chaque site du compte d’hébergement
  • examiner les tâches planifiées de WordPress et du serveur
  • supprimer les comptes inconnus et fermer les sessions actives
  • remplacer le cœur, les plugins et les thèmes par des copies saines
  • identifier une sauvegarde saine ou reconstruire à partir de sources vérifiées
  • mettre en place une supervision et une maintenance pour réduire le risque de réinfection
  • accompagner la demande d’examen auprès de Google si le site a été signalé

Vous pouvez demander de l’aide à n’importe quelle étape, y compris après un nettoyage qui n’a pas tenu.

Ouvrir un ticket de support

Pour les utilisateurs techniques : trouver ce que le nettoyage a laissé passer

Ces vérifications s’adressent aux personnes à l’aise avec SSH, SFTP et WP-CLI.

Avant de commencer, faites une sauvegarde complète des fichiers et de la base de données actuels, et conservez-la à l’écart du site en ligne. Même une copie infectée constitue une preuve utile. Les commandes ci-dessous ne font que lire des informations. Ne supprimez rien tant que vous ne comprenez pas de quoi il s’agit.

Vérifiez les fichiers du cœur de WordPress

wp core verify-checksums

Cette commande compare les fichiers du cœur avec la version officielle. Elle signale les fichiers modifiés et ceux qui ne devraient pas se trouver dans les dossiers du cœur. Tout avertissement concernant wp-admin ou wp-includes mérite attention.

Vérifiez les fichiers des plugins

wp plugin verify-checksums --all

Cela ne fonctionne que pour les plugins du répertoire WordPress.org. Les plugins premium et personnalisés seront signalés comme impossibles à vérifier, ce qui n’est pas en soi un signe d’infection. Pour ceux-là, comparez avec une copie neuve téléchargée auprès de l’éditeur.

Recherchez des fichiers PHP dans les uploads

Le dossier uploads doit contenir des médias, pas du code :

find wp-content/uploads -type f -name "*.php"

Quelques plugins y créent des fichiers PHP inoffensifs, comme un index.php vide : ouvrez donc chaque résultat et vérifiez-le avant d’agir. Vérifiez aussi le dossier mu-plugins :

ls -la wp-content/mu-plugins/

Examinez les événements planifiés de WordPress

wp cron event list

Recherchez les noms de hooks que vous ne reconnaissez pas, en particulier ceux qui ne correspondent à aucun plugin installé. Notez-les avant de supprimer quoi que ce soit.

Si vous avez un accès shell, vérifiez aussi les tâches planifiées propres au serveur pour votre utilisateur :

crontab -l

Beaucoup de panneaux de contrôle d’hébergement affichent aussi les cron jobs dans une section dédiée. Recherchez les commandes qui téléchargent des fichiers ou exécutent du PHP depuis des emplacements inhabituels.

Listez les administrateurs

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

Vérifiez chaque compte. Une date d’inscription récente sur un compte inconnu est un signal d’alerte fort. Sur un multisite, vérifiez aussi les super-administrateurs avec wp super-admin list.

Recherchez les fichiers modifiés récemment

find . -type f -name "*.php" -mtime -14

Ajustez -14 au nombre de jours écoulés depuis le dernier nettoyage. Les fichiers modifiés après le nettoyage, en dehors des mises à jour que vous avez faites, méritent d’être examinés.

Vérifiez les autres dossiers du compte d’hébergement

Remontez d’un niveau depuis le dossier du site et listez son contenu. Recherchez :

  • d’autres installations WordPress, y compris d’anciens sites ou des sites de test
  • des dossiers nommés old, backup, test, dev ou similaires
  • des archives comme des sauvegardes .zip ou .sql laissées sur le serveur

Chaque installation WordPress du compte nécessite les mêmes vérifications. Une installation oubliée est une source fréquente de réinfection.

Si les résultats sont confus ou si vous trouvez quelque chose que vous ne pouvez pas expliquer, arrêtez-vous. D4Hub peut examiner les résultats avec vous ou prendre en charge l’analyse.

Questions fréquentes

Pourquoi l’analyse de mon hébergeur a-t-elle indiqué que le site était sain ?

Les analyses automatiques recherchent des schémas connus. Les portes dérobées peuvent être obscurcies, cachées dans des fichiers légitimes ou stockées dans la base de données, où beaucoup d’outils d’analyse ne regardent pas. Une analyse sans résultat est utile, mais elle ne prouve pas que toutes les portes dérobées ont disparu.

Réinstaller WordPress suffit-il ?

Réinstaller le cœur ne remplace que les fichiers du cœur. Du code malveillant peut encore se trouver dans les plugins, les thèmes, les uploads, la base de données, d’autres sites du compte ou des tâches du serveur.

Un plugin désactivé peut-il encore être dangereux ?

Oui. Si ses fichiers restent sur le serveur, une vulnérabilité qu’ils contiennent peut toujours être exploitée. Les plugins que vous n’utilisez pas doivent être supprimés, pas seulement désactivés.

Dois-je changer d’hébergeur ?

Déplacer le site ne supprime pas le malware, et un site infecté déplacé sur un nouveau serveur reste infecté. Changer d’hébergeur peut se justifier pour d’autres raisons, mais seulement après le nettoyage du site.

Combien de temps surveiller le site après le nettoyage ?

Au moins quelques semaines, en recherchant les nouveaux fichiers, les nouveaux utilisateurs et les comportements inhabituels. Certaines portes dérobées ne sont utilisées qu’occasionnellement : une courte période calme ne prouve donc pas que le site est sain.

Les thèmes et plugins nulled sont-ils vraiment un risque ?

Oui. Ils proviennent de sources non officielles, ne reçoivent pas de mises à jour de sécurité et peuvent déjà contenir du code malveillant. Les remplacer par des copies sous licence fait partie de tout nettoyage sérieux.

D4Hub peut-il m’aider si une autre société a déjà nettoyé le site ?

Oui. Partagez ce que vous savez du nettoyage précédent. D4Hub peut vérifier ce qui a été oublié, trouver le point d’entrée et aider à briser le cycle.

Ressources associées

Services et technologies associés