Il malware su WordPress non si comporta sempre allo stesso modo. A volte il sito reindirizza i visitatori verso farmaci contraffatti. A volte inietta pagine in giapponese invisibili all’occhio umano ma perfettamente leggibili da Google. A volte installa una backdoor silenziosa e aspetta mesi prima di attivarsi. Capire che tipo di malware ha infettato il sito non è un esercizio accademico: è il primo passo per rimuoverlo nel modo corretto e non lasciare tracce che permettono la reinfection.
In questa guida trovi la procedura completa: dall’identificazione del tipo di infezione fino alla verifica finale prima di riaprire il sito al pubblico. È più tecnica dell’articolo sulla gestione di un sito WordPress già compromesso — se stai cercando una panoramica iniziale, parti da lì.
Che tipo di malware ha infettato il tuo WordPress?
Prima di aprire Wordfence o connetterti via FTP, prenditi cinque minuti per capire con che tipo di infezione hai a che fare. La tecnica di rimozione cambia significativamente a seconda della categoria.
Redirect hack
Il sito reindirizza i visitatori verso altri domini — spesso siti di spam, phishing o contenuti per adulti. Il redirect è quasi sempre condizionale: si attiva solo da mobile, solo per chi arriva da Google, solo alla prima visita. Chi gestisce il sito e accede direttamente spesso non lo vede. Il codice malevolo si trova tipicamente nel file .htaccess, in wp-config(.)php o iniettato via JavaScript nei file del tema.
Pharma hack (SEO spam farmaceutico)
Il sito viene trasformato in un distributore silenzioso di spam farmaceutico — link e pagine relative a farmaci come Viagra e Cialis, visibili solo ai crawler di Google e non ai visitatori normali. È uno degli attacchi più insidiosi perché può restare attivo per mesi senza che il proprietario se ne accorga, mentre il ranking del sito crolla progressivamente. Il codice utilizza eval(base64_decode()) offuscato per eludere i plugin di sicurezza.
Japanese SEO spam
Variante del pharma hack: il sito genera centinaia o migliaia di pagine con testo in giapponese — solitamente contenuti e-commerce per prodotti contraffatti. Queste pagine appaiono nell’indice di Google e nella sitemap ma non nella struttura visibile del sito. Il database wp_posts contiene le pagine generate automaticamente dall’attacco.
Backdoor e webshell
Non sempre il malware causa danni visibili immediatamente. Una backdoor è un file PHP che permette all’attaccante di eseguire comandi sul server in modo remoto — una webshell. Spesso è camuffata con un nome che imita file legittimi di WordPress (es. wp-feed.php con codice aggiunto, o file con nomi casuali in cartelle dove non dovrebbero esserci PHP). La sua presenza rende qualsiasi pulizia parziale inutile: l’attaccante può rientrare in qualsiasi momento.
Defacement
La homepage o altre pagine vengono sostituite con contenuti estranei — messaggi politici, rivendicazioni di hacker, pagine vuote. È l’attacco più visibile ma spesso meno pericoloso tecnicamente: l’obiettivo è la visibilità, non l’accesso persistente. La pulizia è più diretta rispetto agli attacchi silenziosi.
Prima di tutto: isola il sito e crea un backup forense
Indipendentemente dal tipo di malware, i primi due passi sono sempre gli stessi: mettere il sito in manutenzione e fare un backup dell’installazione compromessa. Il backup forense — anche del sito infetto — ti serve per analizzare i log del server e, in caso di errori durante la pulizia, per tornare allo stato precedente e ricominciare.
Disattiva la cache e qualsiasi CDN attiva (Cloudflare, Bunny, ecc.) prima di procedere: le versioni cached del malware vengono servite ai visitatori anche dopo che hai ripulito il sito originale, creando falsi negativi durante la verifica
Regola fondamentale
Non eliminare nulla prima di avere il backup. Non importa quanto ovviamente malevolo sembri un file: cancellarlo senza backup potrebbe renderti impossibile capire come è avvenuta l’infezione — informazione cruciale per prevenire la recidiva.
Strumenti per la scansione del malware
Scanner online (nessun accesso richiesto)
Sucuri SiteCheck è il punto di partenza quando non hai accesso alla dashboard o vuoi una verifica esterna prima di intervenire. Analizza il codice HTML pubblicamente accessibile del sito, cerca firme di malware note, verifica se il dominio è in blacklist Google, McAfee o altri. Non rileva malware nei file server-side, ma è utile per avere un quadro iniziale rapido.
Plugin di scansione
Con accesso alla dashboard, Wordfence Security (versione gratuita) è lo strumento più completo per un’installazione self-hosted. Confronta ogni file del sito con il repository ufficiale di WordPress e segnala qualsiasi discrepanza — file modificati, file aggiuntivi non presenti nell’installazione originale, firme di malware note.
Sucuri Security Plugin aggiunge il monitoraggio dell’integrità dei file e un log delle attività sospette. MalCare è un’alternativa valida se vuoi la rimozione automatica con un clic, ma il servizio completo è a pagamento.
Limite importante
In circa il 14% dei siti compromessi, il malware manomette i file di Wordfence stesso per restare nascosto. Se dopo la scansione il sito sembra pulito ma i sintomi persistono, non fidarti del risultato del plugin: procedi con la scansione manuale.
Scansione manuale da riga di comando
Se hai accesso SSH al server, questi comandi cercano i pattern più comuni di malware offuscato nelle cartelle PHP:
- grep -rn “eval(base64_decode” /path/to/wordpress/ — individua il pattern classico dell’offuscamento
- find /path/to/wordpress/wp-content/uploads/ -name “*.php” — PHP nella cartella uploads è quasi sempre malware
- find /path/to/wordpress/ -name “*.php” -mtime -7 — file PHP modificati negli ultimi 7 giorni
Il terzo comando è particolarmente utile: confronta le date di modifica con la data approssimativa dell’attacco per isolare i file toccati dagli hacker.
Rimozione manuale: dove si nasconde il malware in WordPress
File del core e file di configurazione
Scarica una copia pulita di WordPress dalla versione esatta che stai usando (disponibile su wordpress.org/download/releases) e confronta i file del core con quelli del tuo sito. Sovrascrivi wp-admin e wp-includes completamente — non c’è nulla di personalizzato lì dentro che potresti perdere.
Per wp-config(.)php e .htaccess fai un confronto riga per riga con una copia pulita. Cerca codice prima del tag di apertura <?php in wp-config(.)php, o regole RewriteRule verso domini esterni in .htaccess. In .htaccess le regole di redirect malevolo spesso hanno condizioni che le rendono invisibili ai normali visitatori — le trovi cercando HTTP_USER_AGENT o HTTP_REFERER nelle condizioni.
Plugin e temi
Disinstalla tutti i plugin non utilizzati — non disattivarli, disinstallarli completamente. Per quelli attivi, scarica ogni plugin direttamente dal repository ufficiale di WordPress e sostituisci l’intera cartella con la versione pulita. Non fare mai un aggiornamento tramite dashboard su un sito compromesso: l’aggiornamento non sovrascrive file aggiuntivi iniettati dall’attaccante.
Se stai usando un tema nulled — una copia non ufficiale di un tema premium scaricata gratuitamente — la bonifica non è sufficiente. Il codice malevolo è integrato nel tema stesso e ritornerà dopo qualsiasi pulizia. L’unica soluzione è sostituirlo con il tema originale.
Cartella /wp-content/uploads/
Questa cartella non dovrebbe contenere mai file PHP eseguibili — serve solo per immagini, PDF e altri media caricati dagli utenti. Qualsiasi file .php qui dentro è quasi certamente malware. Elimina tutti i PHP trovati nella cartella uploads e aggiungi un file .htaccess in quella directory con questa regola per bloccare future esecuzioni:
- <Files *.php> / deny from all / </Files>
Database
Apri phpMyAdmin e cerca nella tabella wp_posts eventuali pagine create automaticamente dall’attacco — riconosci quelle del Japanese SEO spam dal contenuto in caratteri giapponesi, quelle del pharma hack dai riferimenti a farmaci. Controlla wp_options per valori anomali nei campi siteurl e home e per task cron non standard. Rimuovi eventuali utenti admin non autorizzati dalla tabella wp_users.
Come identificare ed eliminare le backdoor
La backdoor è il componente più pericoloso di qualsiasi infezione. Può essere eliminata solo se la trovi — e gli attaccanti fanno di tutto per nasconderla in posti inaspettati.
I posti più comuni dove cercare backdoor, oltre ai file PHP nelle uploads:
- Cartella /wp-content/mu-plugins/: i plugin in questa cartella vengono caricati automaticamente ad ogni richiesta, senza apparire nella lista plugin. Un file PHP qui è quasi sempre una backdoor.
- Temi non attivi: gli attaccanti iniettano backdoor nei temi inattivi sapendo che vengono ignorati durante la pulizia. Controlla anche il tema Twenty Twenty predefinito se non lo stai usando.
- File con nomi che imitano il core: file come wp-feed.php, wp-log.php o class-wp-cache.php nella root o in cartelle di plugin noti. Confronta ogni file sospetto con l’installazione originale.
- Cartelle nascoste: le cartelle che iniziano con un punto (/.well-known/, /.wp-cli/) sono invisibili nei normali file manager FTP. Abilita la visibilità dei file nascosti nel tuo client FTP prima di procedere.
Il segnale più affidabile di una backdoor è la presenza delle funzioni PHP eval(), base64_decode(), gzinflate(), str_rot13() usate in combinazione. Da sole queste funzioni non sono necessariamente malicious, ma il loro utilizzo combinato in un singolo blocco di codice è un segnale inequivocabile di offuscamento malevolo.
Dopo la pulizia: cosa verificare prima di riaprire il sito
Prima di disattivare la manutenzione e tornare online, esegui questa checklist nell’ordine indicato:
- Esegui una nuova scansione completa con Wordfence — il report dovrebbe essere pulito.
- Verifica il file .htaccess: deve corrispondere al formato standard di WordPress senza regole aggiuntive non riconoscibili.
- Controlla tutti gli utenti admin nella dashboard — rimuovi chiunque non sia riconoscibile.
- Rigenera le secret key e i salt in wp-config(.)php tramite il generatore ufficiale WordPress.
- Cambia le password di WordPress, FTP, database e hosting.
- Verifica che wp-content/uploads/ non contenga PHP ed abbia il file .htaccess di protezione.
- Disattiva la cache e ricarica il sito da un browser in incognito su mobile — verifica che non ci siano redirect.
- Controlla Google Search Console nella sezione Problemi di sicurezza. Se l’attacco è stato rilevato da Google, invia la richiesta di revisione.
La rimozione automatica è sufficiente?
I plugin di rimozione automatica come MalCare o la versione premium di Wordfence sono strumenti validi per infezioni semplici e ben documentate. Hanno però un limite strutturale: operano per firma — riconoscono malware già noto e catalogato. Un attacco che usa tecniche di offuscamento avanzate, backdoor personalizzate o una combinazione di metodi può passare inosservato.
Il problema non è la qualità degli strumenti — è che la rimozione automatica non può sostituire l’analisi del vettore di attacco. Se non sai da dove è entrato l’hacker, la pulizia risolve il sintomo ma non la causa: il sito può essere reinfettato nel giro di ore o giorni, attraverso la stessa vulnerabilità mai chiusa.
Se la scansione automatica non trova nulla ma i problemi persistono, o se vuoi essere certo che la bonifica sia completa senza rischiare di lasciare backdoor attive, contattami: lavoro in modo diretto e risolvo il problema alla radice.
Domande frequenti (FAQ)
Wordfence non trova nulla ma il sito ha ancora problemi: cosa significa?
Significa quasi certamente che il malware utilizza tecniche di offuscamento avanzate che Wordfence non riesce a rilevare per firma. Succede nel 14% circa dei casi secondo i dati Sucuri. In questi casi è necessaria un’analisi manuale dei file e del database, confrontando l’installazione attuale con una versione pulita e cercando pattern sospetti come eval(base64_decode()) nelle sue varianti offuscate.
È possibile rimuovere il malware senza perdere i contenuti del sito?
Sì, nella grande maggioranza dei casi. La pulizia riguarda i file PHP del core, dei plugin e dei temi — non i contenuti caricati. Le pagine, gli articoli e le immagini restano intatti. Solo nel caso di infezioni che generano pagine spam nel database (Japanese SEO spam, pharma hack avanzati) è necessario intervenire anche sui contenuti, rimuovendo le voci create automaticamente dall’attacco.
Quanto tempo ci vuole perché Google rimuova gli avvisi dopo la pulizia?
Dopo aver inviato la richiesta di revisione tramite Google Search Console, Google impiega solitamente tra 24 e 72 ore per esaminare il sito e rimuovere gli avvisi di sicurezza dai risultati di ricerca. Il ranking organico recupera progressivamente nelle settimane successive, con tempi che dipendono da quanto a lungo il sito è rimasto compromesso.
Il malware può reinfettare il sito dopo la pulizia?
Sì, se la vulnerabilità originale non viene chiusa. La reinfection è uno dei segnali più chiari che la bonifica è stata incompleta — o che è rimasta una backdoor attiva che permette all’attaccante di rientrare. Dopo ogni pulizia è essenziale aggiornare tutti i plugin, cambiare le credenziali, bloccare l’esecuzione PHP nelle cartelle esposte e installare un firewall. Nella sezione dedicata alla sicurezza WordPress trovi tutte le guide per costruire una protezione solida prima che succeda di nuovo.
È necessario avvisare i visitatori o i clienti dell'attacco?
Dipende dal tipo di infezione. Se il malware ha raccolto dati personali o di pagamento dei visitatori — il che è più probabile in attacchi su WooCommerce o siti con form di contatto — hai obblighi legali di notifica sotto il GDPR entro 72 ore dalla scoperta della violazione. Se l’infezione era limitata a redirect o spam SEO senza accesso ai dati degli utenti, la notifica non è obbligatoria ma è comunque buona prassi comunicare ai clienti che il sito è stato ripristinato e messo in sicurezza.
