Cryptominage : distinguer mineur serveur et mineur navigateur
Serveur : CPU, facture, risque de suspension. Navigateur : le téléphone du visiteur qui chauffe. Les deux peuvent coexister. Les journaux de process d'un côté, le HTML de pied de page de l'autre. Couper le symptôme sans fermer l'entrée, et ça recommence à 3 h du matin.
Serveur : CPU, facture, suspension. Navigateur : téléphone qui chauffe. Les deux peuvent coexister. Les journaux de process et le HTML de pied de page.
Deux mineurs, deux factures, deux victimes
Le mineur serveur consomme votre CPU (et souvent celui des voisins mutualisés). L'hébergeur parle d'activité anormale, la facture saute, le site rame sans pic de visites réelles. Le mineur navigateur fait travailler l'appareil du client : ventilateur, batterie, onglet lourd. Vous, derrière un cache admin, ne le voyez pas. Le guide cryptominage site sépare les deux ; ici on les tient ensemble, parce qu'ils coexistent souvent.
Un site peut miner côté serveur (process PHP, binaire, cron) ET injecter un JS au pied de page. Traiter l'un laisse l'autre. Les tests visiteurs (mobile, privé) attrapent le JS ; les graphiques CPU attrapent le process.
Ce n'est pas « un peu de pub ». C'est une utilisation de ressources volées, et un motif classique de suspension.
Reconnaître le minage serveur
CPU saturé 24 h, load élevé, processus PHP ou inconnus dans le gestionnaire du panel, facture « resource abuse », mail o2switch / OVH / Hostinger. Pas de trafic dans Analytics à la hauteur. Processeur saturé, facture qui explose.
VPS : `top` / équivalent, containers oubliés. Un « nettoyage WordPress » ne tue pas un binaire dans `/tmp` relancé par cron. VPS.
On ne liste pas les noms de mineurs à coller dans un moteur. On dit : process inhabituel, fichier récemment modifié, cron qui le relance. Demandez les journaux de process à l'hébergeur.
Où ça se loge (sans recette d'attaque)
Serveur : fichier à la racine, mu-plugin, drop-in, cron panel, cron Unix, voisin de compte qui lance un process. Navigateur : thème, option, plugin insert-headers, GTM, CDN. Les deux : une backdoor qui repose l'un ou l'autre.
WordPress n'a pas le monopole. Joomla `/images`, Drupal `files`, PHP maison, CMS oublié. Joomla, Drupal, site PHP.
Dépendance npm compromise qui injecte un mineur au build. Composer / npm.
Couper avant la suspension, sans tout casser
Prévenez l'hébergeur : intervention en cours, vous demandez les process et les journaux, pas la réouverture magique s'il a déjà coupé. Tuez le process identifié, retirez le fichier après copie, changez le panel. Attendre l'e-mail de suspension complique : plus de FTP, parfois plus de mail. Mail coupé.
Ne formatez pas le VPS avant copie. Ne « réinstallez pas WordPress » comme seul geste. Premiers gestes.
JS : retirez l'appel, purge CDN. Un cache Cloudflare qui ressert le mineur donne l'impression que « c'est encore là ». Cloudflare.
Cron, process, et la récidive à 3 h
Le minage qui « revient la nuit » est presque toujours une tâche ou une backdoor. Lisez cron WordPress, cron système, panel. wp-cron vs cron sale.
48 h de charge plate, puis trente jours. Garantie 30 jours.
Isolation : le voisin relance. Isolation.
Hébergeur : resource abuse n'est pas « un peu lent »
Le motif décide. Malware + CPU : les deux couches. Phishing : autre dossier. Lisez le mail. o2switch cite souvent un chemin ; partez-en, élargissez. o2switch, OVH.
Constat : process stoppé, fichier retiré, entrée (extension, compte, cron), tests. Pas « j'ai mis Cloudflare ». Relancer toutes les heures n'accélère pas. Guide suspension.
IP et voisins : un mineur bruyant noircit parfois la réputation du nœud. Réputation IP.
Après : tests, trente jours, isolation
Tests visiteurs + CPU + `site:`. WAF après, comme filet, pas comme tueur de process. WAF.
Moins d'admins, abandonnés listés, secrets tournés. Si l'offre ne permet pas d'isoler, partez après propreté. Changer d'hébergement.
Créer un compte si vous ne distinguez pas process et JS, ou si la boutique chauffe les téléphones au checkout. Un plugin cleaner qui « répare » la home et ignore le cron vous offre une facture identique le matin.
Limiter le CPU « pour vivre avec » masque la facture un moment. L'hébergeur suspend quand même. Traitez la cause. Processeur saturé.
Les deux en même temps : ne traiter qu'une facture
CPU plat après avoir tué un process, téléphones encore chauds : le JS est encore là (thème, GTM, cache CDN). Inverse : mobile OK, load 100 % la nuit : cron / voisin / binaire. Faites les deux tests le même soir. Scripts tiers. Cloudflare : purge, sinon le mineur JS revient par l'edge.
Constat hébergeur : process stoppé, fichier retiré, entrée, tests. Motif resource abuse ≠ phishing. o2switch cite un chemin : partez-en, cherchez le cron. Guide.
Dépendance npm au build : le mineur est dans le bundle. Composer / npm. Isolation : le voisin relance. Isolation. Trente jours de charge + `site:`. Garantie.