Supprimer un malware WordPress, ce n’est pas seulement “désinfecter” et repartir tranquillement. Dans beaucoup de cas réels, la désinfection est le début du travail, pas sa fin. Le piège, c’est que le code malveillant n’apparaît pas par magie, il s’appuie presque toujours sur une porte d’entrée: plugin ou thème trop permissif, mot de passe faible, droits d’écriture mal gérés, faille connue non corrigée, ou configuration qui laisse fuiter des informations et facilite la compromission.
Quand on voit un site qui a été réinjecté avec du spam ou des redirections bizarres, la tentation est grande de supprimer les fichiers infectés puis de remettre WordPress en production. Pourtant, si la vulnérabilité reste en place, le site peut être re-compromis en quelques jours, parfois en quelques heures. L’objectif de la phase qui suit la suppression est clair: trouver ce qui a permis l’intrusion, le corriger, puis prouver que le site est stable.
La suppression ne clôt pas le dossier
Sur un site compromis, j’ai déjà vu la séquence suivante: nettoyage rapide des fichiers suspects, réinstallation “au propre” du cœur WordPress, et tout semble fonctionner. Le lendemain, un autre vecteur apparaît: une tâche planifiée réactivée, un compte administrateur ajouté discrètement, ou un nouveau script dans un dossier moins évident. La première vague de nettoyage était nécessaire, mais elle n’a pas adressé la cause.
Il y a une idée qui aide à garder le cap: un malware durable est rarement “juste un fichier”. C’est souvent un ensemble de mécanismes. Il peut conserver un point d’accès (un compte), modifier la chaîne d’exécution (hook dans WordPress, configuration du thème), et masquer ses traces (noms de fichiers proches de composants légitimes, encodages, ou chargements distants).
Dès lors, la correction des vulnérabilités après suppression repose sur trois axes, à traiter dans l’ordre qui réduit le risque: sécuriser l’accès (qui peut encore entrer), éliminer les persistances (ce qui se rejette après nettoyage), puis durcir la configuration (ce qui empêche la prochaine entrée).
Commencer par reconstituer ce qui s’est passé
Avant de toucher à 20 plugins ou de réinstaller un thème, prenez cinq minutes de méthode. Une compromission, même si elle est “contenue” aujourd’hui, laisse presque toujours des indices. Le but n’est pas de tout comprendre en profondeur, c’est de décider vite et bien de quoi on dépend.
Ce que je vérifie systématiquement après un signal d’infection:
Le contenu des pages réaffichées par le navigateur et par un outil d’inspection. Parfois, le code malveillant n’est pas dans les fichiers WordPress visibles. Il peut injecter du JavaScript à la volée via un include dans un fichier de thème, ou via une requête vers un domaine tiers.
Les fichiers récemment modifiés et leurs traces d’écriture. Sur un hébergement standard, les dates de modification ne sont pas parfaites, mais elles donnent un angle de recherche. Si vous voyez des modifications dans un dossier qui n’aurait pas dû changer depuis des semaines, c’est un point d’arrêt.
Les événements d’accès côté hébergement. Les journaux d’authentification, même incomplets, peuvent révéler une tentative brute force, une session anormale, ou un accès depuis un pays ou un bloc IP inattendu.
Enfin, l’état de WordPress lui-même. WordPress peut conserver des éléments en base, même si les fichiers ont été nettoyés. Les comptes utilisateurs, les options et certains tables peuvent porter des paramètres de persistance.
Cette reconstitution sert une seule chose: éviter de corriger “au hasard”. Les corrections aléatoires peuvent casser le site, mais surtout elles peuvent rater la porte d’entrée.
Sécuriser l’accès avant de corriger quoi que ce soit
Si le site a été compromis, la priorité est de retirer tout ce qui pourrait permettre un retour rapide du malware. Le plus fréquent, c’est un point d’accès: un compte administrateur créé, un jeton de connexion conservé, ou une réutilisation de mot de passe sur d’autres services.
Commencez par les actions qui ont le meilleur rapport impact immédiat / effort:
- changez tous les mots de passe liés au site, y compris ceux des comptes administrateurs et du compte d’hébergement si vous l’utilisez pour modifier le site ; révoquez les sessions si WordPress ou votre hébergeur propose une action de révocation ; vérifiez la liste des utilisateurs WordPress et supprimez ceux que vous ne reconnaissez pas ; changez l’ensemble des secrets et clés (clés d’authentification WordPress, clés API si vous en avez, et tout ce qui ressemble à un identifiant réutilisé).
Je fais rarement ces actions “dans l’ordre inverse”, car certains malwares se déclenchent au premier login ou au premier chargement d’un plugin. En pratique, on peut se retrouver à nettoyer des fichiers, puis à relancer involontairement l’infection via un compte qui a encore des droits.
Passer au crible la persistance WordPress
Même si le code malveillant a été supprimé des fichiers, la persistance peut survivre dans WordPress. C’est là qu’on voit la différence entre une suppression partielle et une restauration maîtrisée.
Les persistances typiques:
Les comptes utilisateurs et leurs rôles. Un malware peut ajouter un administrateur, ou changer le rôle d’un compte pour conserver le contrôle.
Les options WordPress modifiées. Certaines options stockent des scripts, des URLs de redirection, ou des paramètres de chargement.
Les hooks et le contenu injecté. Selon le vecteur, l’injection peut se trouver dans des fichiers de thème, dans des extensions spécifiques, ou dans des fichiers qui sont chargés à chaque requête.
Les tâches planifiées. Si le site utilise une forme de scheduler, un script malveillant peut planifier un rappel périodique pour réinjecter du code.
Après suppression, je recommande une vérification ciblée, sans tomber dans une obsession qui fait perdre du temps. Si vous avez accès à un environnement de test, faites aussi un chargement de pages clés pendant que vous surveillez les erreurs et les requêtes sortantes. Une persistance se repère souvent parce que le site continue à produire des comportements “impossibles”.
Une mini check-list utile (avant de “durcir”)
Voici les actions à faire avant d’attaquer la hardening plus large, elles sont simples et souvent déterminantes:
Vérifier les utilisateurs WordPress (comptes inconnus, rôles anormaux) ; Contrôler les fichiers de thème et d’extensions récemment modifiés ; Rechercher les redirections et injections récurrentes via le navigateur et les logs ; Confirmer que les comptes et sessions sont bien révoqués après changement de mots de passe.Si vous sautez cette étape, vous pouvez durcir votre configuration et empêcher certains vecteurs, tout en laissant passer celui qui a déjà fonctionné.
Identifier la vulnérabilité, pas seulement “le malware”
Le terme “vulnérabilité” est large, mais dans un cas WordPress compromis, il s’agit presque toujours d’un des scénarios suivants: un composant vulnérable, une configuration trop permissive, ou une erreur humaine (droits, mots de passe, manque de contrôle).
Le scénario le plus courant: un plugin ou un thème
Beaucoup de compromissions remontent à un plugin obsolète, à un plugin “nullement maintenu”, ou à un thème dont le code a été modifié par l’attaque. Parfois, le plugin n’est pas “vulnérable” au sens CVE, mais il est mal intégré, accepte des entrées non filtrées, et offre une surface d’injection.
Ce que je fais dans ce cas:
Je compare la version installée à celle attendue, et je vérifie aussi les changements de fichiers. Si un plugin légitime a été modifié à la source, ne vous contentez pas de le mettre à jour. Réinstallez-le proprement depuis une source de confiance, ou remplacez-le par un équivalent si le plugin n’est pas indispensable.
Si plusieurs plugins ont été touchés, je privilégie d’abord ceux qui s’exécutent sur chaque page (constructeur de thème, intégration, frameworks). Ce sont souvent eux qui transportent la charge.
Je surveille aussi les dépendances, parce qu’un plugin peut être “sain” mais charger des scripts externes ou des include dépendants d’une URL.
Une configuration trop permissive côté fichiers
Un malware sur WordPress exploite souvent le fait que le site autorise trop facilement l’écriture. Si le serveur permet l’écriture à des emplacements inattendus, ou si les permissions de dossiers ne sont pas cohérentes, un vecteur d’injection peut transformer une simple faille en compromission persistante.
Je regarde en particulier:
- les permissions des dossiers d’uploads et leur séparation avec les zones sensibles ; les permissions des dossiers de thèmes et plugins, qui ne devraient pas être modifiables par un processus applicatif ; l’existence de fichiers temporaires ou uploads exécutables (un point crucial, selon l’environnement).
Sans entrer dans des recettes universelles de permissions (elles dépendent fortement de l’hébergement et de la façon dont PHP est servi), l’idée est toujours la même: minimiser ce qui peut être écrit depuis l’application.
L’angle mort humain: mots de passe et réutilisation
Un malware n’a pas besoin d’être sophistiqué si les identifiants sont faibles ou réutilisés. Dans des cas que j’ai gérés, la compromission s’est faite via un compte admin, puis l’attaque s’est déplacée vers WordPress et le fichier de thème. En clair, l’étape la plus simple était l’accès.
Corrigez donc les habitudes, pas seulement les conséquences:
- mots de passe uniques, longs, stockés dans un gestionnaire ; retrait des comptes non utilisés, surtout ceux avec des rôles élevés ; limitation des tentatives d’authentification si votre stack le permet ; attention aux identifiants partagés entre plusieurs personnes.
Ce point peut sembler “évident”, mais il est souvent la cause racine. Une fois, j’avais un site propre côté code, mais un compte admin avait été réutilisé sur un autre service compromis. Le malware a alors trouvé l’entrée par le facteur humain, pas par une faille de plugin.
Réinstaller proprement, même si vous pensez avoir “nettoyé”
On peut corriger fichier par fichier, mais dans un contexte de compromission, la réinstallation “propre” est parfois le chemin le plus sûr. Je ne parle pas d’une réinstallation complète de l’ensemble du site à la première alerte, mais d’un nettoyage méthodique.
Le principe: WordPress core, thèmes et plugins indispensables doivent être alignés avec une source connue. Si vous avez remplacé un plugin par une copie récupérée depuis un dépôt non fiable, ou si un fichier a été “nettoyé” à la main sans certitude, vous gardez un risque.
En pratique, une stratégie fiable consiste à:
- restaurer WordPress core depuis une distribution officielle ; réinstaller les plugins et thèmes depuis leurs sources d’origine (ou utiliser un fournisseur qui vous donne une confiance raisonnable) ; vérifier la base uniquement pour les éléments qui ne peuvent pas être réinstallés par fichier (contenus, réglages, utilisateurs).
Cette méthode réduit l’incertitude. Elle n’élimine pas tous les risques, mais elle limite les zones où le malware peut se cacher dans un fichier légèrement modifié.
Contrôler la sortie réseau et les domaines
Un malware a souvent besoin de communiquer. C’est aussi un levier de correction: même si le code reste discret, les requêtes sortantes laissent des traces.
Selon votre hébergeur, vous pouvez observer les logs du serveur, les requêtes PHP sortantes, ou des indicateurs dans votre pare-feu applicatif. L’idée n’est pas d’exiger un reporting parfait, c’est de repérer les comportements anormaux.
Quand on voit des chargements vers des domaines inconnus, des appels à des URLs inutiles au site, ou des requêtes périodiques, on tient un fil. Coupez d’abord ce qui permet ces appels (fichiers modifiés, hooks), puis durcissez pour empêcher la réécriture et la réactivation.
Durcir après la suppression: empêchez la répétition
Une fois que l’accès est sécurisé et que la persistance est contrôlée, vous pouvez passer à une phase “prévention”. La prévention ne doit pas devenir un projet sans fin. Elle doit être pragmatique, adaptée à votre niveau de risque et à la nature du site.

Mettre à jour, mais pas seulement “cliquer”
Mettre à jour WordPress, les thèmes et plugins est indispensable, mais il y a un piège. Une mise à jour peut échouer si certains fichiers ont été corrompus ou si le site a été “patché” à la main. Dans ce cas, la mise à jour ne corrige pas, elle masque.
Je préfère une logique en deux temps:


D’abord, remettre une base saine (réinstallation des composants), puis ensuite appliquer les mises à jour. Cela limite les conflits et réduit la probabilité de conserver un composant modifié.
Réduire la surface d’attaque
La surface d’attaque se réduit en supprimant ce qui n’est pas utilisé. Beaucoup de sites gardent des plugins “pour plus tard”, ou des thèmes expérimentaux. Après un incident, c’est le moment de faire le ménage.
Côté approche, je conseille un tri basé sur l’utilité réelle, pas sur la nostalgie:
- retirer les plugins inutiles ; vérifier les plugins de sécurité que vous ajoutez, pour éviter les doublons et les comportements contradictoires ; limiter les éditeurs et rôles élevés au strict nécessaire.
Une zone souvent négligée: la gestion des fichiers et des rôles
Les rôles WordPress permettent de contrôler ce que chaque compte peut faire. Après un nettoyage, je revalide qui a le droit d’éditer des fichiers depuis l’interface, qui a le droit d’installer des extensions, et qui a le droit de publier.
Quand un site est compromis, je suppose que la sécurité “normale” ne suffit pas. Il faut exiger une séparation plus nette entre les rôles de gestion et les rôles de production.
Installer des garde-fous, sans casser
On peut ajouter une couche de protection: pare-feu applicatif, règles de limitation, surveillance. Mais chaque couche peut générer des faux positifs.
Un compromis raisonnable que j’utilise souvent consiste à commencer par la surveillance et la journalisation, puis à durcir petit à petit. Ainsi, on évite de bloquer le site au moment où l’on est encore en train de corriger.
Voici une liste courte de garde-fous qui donnent un bon retour sur effort, sans imposer un chantier infini:
Activer une journalisation exploitable (authentification, erreurs, comportements inhabituels) ; Renforcer l’authentification admin si votre stack le permet (mécanismes de challenge, limitation de tentatives) ; Vérifier l’accès aux zones sensibles (admin, uploads si nécessaire, endpoints non utilisés) ; Mettre en place une stratégie de sauvegarde vérifiée, avec restauration testée.Le dernier point est crucial. Une sauvegarde dont personne ne teste la restauration est surtout une promesse, pas une solution.
Tester après correction: prouver que le risque baisse
Après avoir corrigé vulnérabilités et composants, il faut valider. Le test ne se limite pas à “le site s’affiche”.
Je fais des vérifications de comportement:
Le rendu des pages clés, y compris les pages qui déclenchent des templates différents (accueil, article, catégories, page d’inscription si elle existe). Un malware peut injecter uniquement sur certains types de pages.
Le comportement du formulaire, si formulaires existent. Certains vecteurs utilisent l’envoi de données pour déposer ou déclencher un mécanisme.
La cohérence des scripts chargés. On observe les URLs de scripts externes et on s’assure qu’il n’y a pas de nouveaux appels à des domaines inattendus.
Côté technique, je surveille aussi les erreurs. Un patch mal fait peut laisser des avertissements PHP et casser des hooks. Les erreurs ne prouvent pas l’absence de malware, mais elles indiquent que la correction a peut-être introduit une nouvelle fragilité.
Quand demander une aide externe
Il y a des cas où l’intervention d’un spécialiste est rentable. Par exemple, quand vous n’avez plus accès aux journaux, quand le site est fortement modifié, ou quand vous suspectez une compromission profonde (plus que WordPress). Un signal classique est la répétition du problème après plusieurs nettoyages, ou des symptômes trop larges: lenteur inexpliquée, trafic sortant anormal, logs d’erreurs massifs.
Une autre situation: absence de sauvegarde exploitable. Si vous ne pouvez pas restaurer un état sain, vous devez faire plus d’investigations. Là, l’effort peut devenir disproportionné.
La règle que je garde en tête: si le temps passé en “suppression malware WordPress” à répétition dépasse ce que coûterait un audit complet, alors une expertise externe devient logique.
Garder le site propre sur la durée
Une correction de vulnérabilités après suppression doit s’accompagner d’une routine réaliste. Pas une surveillance 24 heures sur 24, mais une discipline qui réduit les chances de rechute.
J’insiste souvent sur trois habitudes:
Des mises à jour planifiées, pas opportunistes. Mettre à jour quand on a le temps évite les trous de sécurité, mais il faut aussi valider sur un environnement de test si c’est possible.
Une réduction progressive des plugins. Chaque extension est une surface d’attaque potentielle, même si elle est “petite”. La meilleure sécurité, c’est ce qui n’existe pas.
Une vérification de cohérence après mise à jour. Par exemple, recontrôler les rôles admin, vérifier l’apparition de nouveaux fichiers, et garder un oeil sur les comportements anormaux.
Si vous avez déjà vécu une compromission, vous savez que la vigilance change de nature. On ne cherche plus “l’attaque”, on cherche “les écarts”. Un site sain devient un repère, et tout changement déclenche des vérifications.
Réflexes pratiques si vous êtes au milieu de l’incident
Si vous êtes en pleine action et que vous devez décider rapidement, voici quelques repères utiles en situation, sans vous enfermer dans une procédure rigide:
D’abord, isolez. Si vous pouvez, testez dans un environnement séparé, ou mettez le site en mode maintenance le temps de couper les accès non indispensables.
Ensuite, empêchez la réinfection. Les changements de mots de passe, la révocation des sessions et la suppression des utilisateurs inconnus passent avant le reste.
Puis, remettez une base fiable, core et composants depuis des sources connues. Les “suppresions” à la main peuvent marcher, mais elles sont plus difficiles à prouver.
Enfin, durcissez et surveillez. La correction des vulnérabilités après suppression a pour but d’éviter que le même scénario se reproduise.
Une suppression réussie redonne une apparence normale au site. Une correction de vulnérabilités redonne surtout quelque chose d’autre, https://gardewp.fr/nettoyage-malware-wordpress/ une certitude opérationnelle. Une fois que l’accès est verrouillé, que les persistances sont neutralisées, et que les composants ne peuvent plus être réécrits facilement, le risque retombe. C’est à ce moment que vous pouvez vraiment passer de la gestion de crise à la maintenance sereine.