Perché il malware continua a tornare sul mio sito WordPress?

Hai ripulito il tuo sito WordPress ma il malware è tornato? Scopri perché avvengono le reinfezioni, dai punti di accesso rimasti aperti alle backdoor nascoste, e come interrompere il ciclo.

Apri un ticket di supporto

Il tuo sito è stato violato, qualcuno l’ha ripulito e per qualche giorno o settimana tutto sembrava a posto. Poi sono ricomparsi lo stesso reindirizzamento, le stesse pagine di spam o gli stessi file sospetti.

È una delle situazioni più frustranti per chi gestisce un sito. Può sembrare che la pulizia non sia servita a niente, o che il malintenzionato sia impossibile da fermare.

Nella maggior parte dei casi, un malware che continua a tornare significa che la pulizia ha eliminato i sintomi visibili ma non la causa. Qualcosa permette ancora al malintenzionato di rientrare, oppure qualcosa rimasto sul server ricrea l’infezione.

La buona notizia è che una reinfezione di solito ha un motivo identificabile. Una volta trovato e chiuso quel motivo, il ciclo di norma si interrompe.

Questa guida spiega i motivi più comuni per cui il malware ritorna, quali controlli puoi fare in sicurezza, cosa evitare e quando chiedere l’aiuto di uno specialista.

Cosa significa quando il malware continua a tornare?

Un’infezione di WordPress di solito ha tre parti:

  • il punto di accesso, la debolezza che il malintenzionato ha usato per entrare
  • la persistenza, ciò che gli permette di tornare o che mantiene vivo il codice
  • il payload, il danno visibile, come pagine di spam, reindirizzamenti o script iniettati

Molte pulizie si concentrano sul payload perché è ciò che vedono visitatori, clienti e Google. Rimuoverlo fa sembrare di nuovo normale il sito. Ma se il punto di accesso o il meccanismo di persistenza sopravvivono, il payload ritorna, a volte nel giro di poche ore.

Quindi la domanda da porsi non è "come rimuoviamo di nuovo il malware?" ma "cosa ha lasciato indietro l’ultima pulizia?".

Perché il malware ritorna?

Spesso i motivi sono più di uno allo stesso tempo.

Il punto di accesso non è mai stato chiuso

Se il malintenzionato è entrato sfruttando una debolezza, quella debolezza potrebbe essere ancora lì. Esempi comuni:

  • un plugin o un tema vulnerabile che non è stato aggiornato o che non è più mantenuto
  • un plugin o un tema nulled o piratato, scaricato da una fonte non ufficiale, che può contenere codice dannoso fin dall’inizio
  • credenziali rubate, come una password di WordPress, dell’hosting, SFTP o del database che non è stata cambiata
  • un plugin abbandonato disattivato ma ancora presente sul server, dove i suoi file restano raggiungibili
  • una vecchia copia del sito in una sottocartella, con software datato e vulnerabile

Disattivare un plugin non equivale a rimuoverlo. In molti casi i suoi file si possono ancora richiamare direttamente.

Sono rimaste delle backdoor

I malintenzionati raramente si affidano a un solo modo per entrare. Dopo la prima compromissione, spesso installano delle backdoor: piccoli frammenti di codice che permettono loro di eseguire comandi o caricare file quando vogliono.

Le backdoor possono essere:

  • nascoste in file con nomi dall’aria innocua
  • aggiunte a file legittimi di plugin o temi
  • archiviate nella cartella degli upload, che dovrebbe contenere solo file multimediali
  • inserite nella cartella mu-plugins, che si carica in automatico e non compare nel normale elenco dei plugin
  • memorizzate nel database, per esempio dentro un’opzione o un widget

Una pulizia che rimuove il malware visibile ma tralascia anche solo una backdoor lascia la porta aperta.

Altri siti nello stesso account di hosting sono infetti

Se più siti condividono un account di hosting, l’infezione di uno spesso può raggiungere gli altri. Ripulire solo il sito che mostra i sintomi lascia intatta la fonte.

Succede molto spesso con vecchi siti di test, microsite dimenticati o una versione precedente del sito tenuta "per sicurezza".

Attività pianificate ricreano l’infezione

WordPress ha un proprio sistema di pianificazione, chiamato WP-Cron, e i server hanno le proprie attività pianificate (cron job). Un malintenzionato può aggiungere un’attività che scarica o riscrive regolarmente codice dannoso.

Se l’attività non viene rimossa, il malware può ricomparire a intervalli regolari, il che spesso è un indizio utile.

Un account compromesso è ancora attivo

Il malintenzionato potrebbe avere ancora:

  • un account amministratore in WordPress, magari con un nome dall’aspetto normale
  • una sessione di accesso attiva che non è mai stata chiusa
  • l’accesso al pannello di controllo dell’hosting, a SFTP o al database
  • l’accesso a un account email usato per reimpostare le password
  • la proprietà del sito in Google Search Console

Se uno di questi elementi è sfuggito, il malintenzionato può semplicemente accedere di nuovo. Leggi cosa fare con un amministratore sconosciuto per maggiori dettagli.

È stato ripristinato un backup infetto

Ripristinare un backup è una risposta comune a una violazione. Ma se il backup è stato fatto dopo l’inizio della compromissione, contiene lo stesso malware o la stessa backdoor.

Le infezioni possono restare silenti per settimane prima di mostrare sintomi visibili, quindi un backup fatto "prima che ci accorgessimo del problema" non è necessariamente pulito.

Quali sono i primi controlli sicuri?

Questi controlli ti aiutano a raccogliere informazioni senza modificare nulla.

Annota lo schema

Annota:

  • quando è comparso per la prima volta il malware
  • quando è stato ripulito, e da chi
  • quando è tornato
  • se è tornato nella stessa forma o in una diversa
  • se sembra tornare a intervalli regolari

Uno schema regolare fa pensare a un’attività pianificata. Un ritorno rapido dopo una pulizia fa pensare a una backdoor o a un account attivo. Un ritorno dopo molto tempo fa pensare a un punto di accesso usato di nuovo.

Chiedi cosa comprendeva la pulizia precedente

Se il sito è stato ripulito da un provider di hosting, un’agenzia o un servizio di sicurezza, chiedi:

  • cosa hanno rimosso
  • se hanno scoperto come è entrato il malintenzionato
  • se hanno controllato gli altri siti nello stesso account
  • se password e chiavi di sicurezza sono state cambiate
  • se hanno controllato attività pianificate e account utente

Le lacune nelle risposte spesso indicano il problema.

Controlla utenti e plugin nella bacheca

In WordPress, guarda Users → All Users (Utenti → Tutti gli utenti) e filtra per Amministratore. Verifica se ci sono account che non riconosci.

Poi guarda Plugins → Installed Plugins (Plugin → Plugin installati). Annota i plugin che non riconosci, quelli non aggiornati da molto tempo e quelli installati da fuori della directory ufficiale senza una licenza valida.

Per ora non eliminare nulla. Annota ciò che vedi.

Chiedi al provider di hosting

Il provider di hosting potrebbe essere in grado di dirti:

  • se viene ancora rilevato malware
  • quali altri siti condividono l’account
  • se ci sono attività pianificate a livello di server
  • se ci sono stati accessi sospetti al pannello di controllo o a SFTP
  • se sono disponibili i log del server per il periodo dell’attacco

Cosa puoi fare subito in sicurezza?

Alcuni passaggi riducono il rischio senza distruggere le prove:

  • cambia la password del tuo account WordPress e del tuo account di hosting, usando password uniche
  • attiva l’autenticazione a due fattori dove disponibile
  • verifica che l’account email usato per WordPress e per l’hosting sia sicuro
  • smetti di ripristinare backup finché non è chiaro quale sia pulito
  • sospendi la pubblicità che porta traffico al sito, se i visitatori vengono reindirizzati

Cambiare tutte le password è più efficace dopo aver trovato il punto di accesso. Altrimenti, le nuove password potrebbero essere esposte allo stesso modo.

Cosa evitare?

Evita di:

  • ripetere la stessa pulizia sperando in un risultato diverso
  • cancellare file a caso
  • disattivare i plugin sospetti invece di rimuoverli
  • ripristinare il backup più recente senza controllarlo
  • ripulire un sito lasciando intatti gli altri nello stesso account
  • installare più plugin di sicurezza contemporaneamente
  • lasciare al loro posto gli amministratori sconosciuti "per dopo"
  • usare plugin e temi nulled o piratati

Come interrompere il ciclo?

Una risposta completa di solito comprende:

  1. conservare una copia dei file, del database e dei log attuali
  2. trovare il punto di accesso, usando log, date dei file e vulnerabilità note
  3. sostituire core di WordPress, plugin e temi con copie nuove da fonti ufficiali
  4. cercare backdoor nei file rimanenti, negli upload e nel database
  5. controllare ogni sito nell’account di hosting
  6. rimuovere gli account sconosciuti e le attività pianificate dannose
  7. cambiare tutte le password e le chiavi di sicurezza di WordPress
  8. rimuovere plugin, temi e vecchie copie del sito non usati
  9. monitorare il sito dopo la pulizia per confermare che l’infezione non sia tornata

Il passo 9 conta. Una pulizia è confermata solo quando il sito resta pulito nel tempo.

Quando chiedere supporto?

Chiedi aiuto quando:

  • il malware è tornato almeno una volta
  • non sai come è entrato il malintenzionato
  • più siti condividono lo stesso account di hosting
  • il sito gestisce pagamenti, abbonamenti o dati personali
  • Google o il tuo provider di hosting hanno segnalato il sito
  • non hai un backup di cui ti fidi

Un’infezione ricorrente è il segno che qualcosa di specifico è sfuggito. Trovarlo spesso richiede l’accesso ai log ed esperienza con gli schemi usati dai malintenzionati.

Come può aiutarti D4Hub

D4Hub può:

  • rivedere cosa ha coperto e cosa non ha coperto la pulizia precedente
  • individuare il punto di accesso usando log, analisi dei file e vulnerabilità note
  • cercare backdoor nei file, negli upload, in mu-plugins e nel database
  • controllare ogni sito nell’account di hosting
  • rivedere le attività pianificate di WordPress e del server
  • rimuovere gli account sconosciuti e chiudere le sessioni attive
  • sostituire core, plugin e temi con copie pulite
  • individuare un backup pulito o ricostruire da fonti verificate
  • impostare monitoraggio e manutenzione per ridurre il rischio di reinfezione
  • supportarti nella revisione di Google se il sito è stato segnalato

Puoi chiedere supporto in qualsiasi fase, anche dopo una pulizia che non ha retto.

Apri un ticket di supporto

Per chi vuole mettere le mani in pasta: trovare ciò che la pulizia ha tralasciato

Questi controlli sono per chi ha dimestichezza con SSH, SFTP e WP-CLI.

Prima di iniziare, fai un backup completo dei file e del database attuali e tienilo separato dal sito online. Anche una copia infetta è una prova utile. I comandi che seguono leggono soltanto informazioni. Non eliminare nulla finché non capisci di cosa si tratta.

Verifica i file del core di WordPress

wp core verify-checksums

Questo confronta i file del core con la versione ufficiale. Segnala i file modificati e quelli che non dovrebbero trovarsi nelle cartelle del core. Qualsiasi avviso su wp-admin o wp-includes merita attenzione.

Verifica i file dei plugin

wp plugin verify-checksums --all

Funziona solo per i plugin della directory di WordPress.org. I plugin premium e personalizzati risulteranno non verificabili, il che da solo non è un segno di infezione. Per questi, confronta con una copia nuova scaricata dal fornitore.

Cerca file PHP negli upload

La cartella degli upload dovrebbe contenere file multimediali, non codice:

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

Alcuni plugin creano lì file PHP innocui, come un index.php vuoto, quindi apri ogni risultato e controllalo prima di intervenire. Controlla anche la cartella mu-plugins:

ls -la wp-content/mu-plugins/

Rivedi gli eventi pianificati di WordPress

wp cron event list

Cerca nomi di hook che non riconosci, soprattutto quelli che non corrispondono a nessun plugin installato. Annotali prima di rimuovere qualsiasi cosa.

Se hai accesso alla shell, controlla anche le attività pianificate del server per il tuo utente:

crontab -l

Molti pannelli di controllo dell’hosting mostrano i cron job anche in una sezione dedicata. Cerca comandi che scaricano file o eseguono PHP da posizioni insolite.

Elenca gli amministratori

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

Controlla ogni account. Una data di registrazione recente su un account sconosciuto è un forte segnale d’allarme. Su un multisito, controlla anche i super amministratori con wp super-admin list.

Cerca i file modificati di recente

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

Adatta -14 al numero di giorni trascorsi dall’ultima pulizia. I file modificati dopo la pulizia, a parte quelli toccati dagli aggiornamenti che hai fatto tu, vanno esaminati.

Controlla le altre cartelle dell’account di hosting

Sali di un livello rispetto alla cartella del sito ed elenca cosa c’è. Cerca:

  • altre installazioni di WordPress, compresi vecchi siti o siti di test
  • cartelle chiamate old, backup, test, dev o simili
  • file di archivio come backup .zip o .sql lasciati sul server

Ogni installazione di WordPress nell’account richiede gli stessi controlli. Una dimenticata è una fonte frequente di reinfezione.

Se i risultati ti confondono o trovi qualcosa che non sai spiegare, fermati. D4Hub può rivedere l’output con te o farsi carico dell’analisi.

Domande frequenti

Perché la scansione del mio provider di hosting diceva che il sito era pulito?

Le scansioni automatiche cercano schemi noti. Le backdoor possono essere offuscate, nascoste in file legittimi o memorizzate nel database, dove molti scanner non guardano. Una scansione pulita è utile, ma non dimostra che ogni backdoor sia sparita.

Reinstallare WordPress basta?

Reinstallare il core sostituisce solo i file del core. Il codice dannoso può trovarsi ancora in plugin, temi, upload, database, altri siti nell’account o attività del server.

Un plugin disattivato può essere ancora pericoloso?

Sì. Se i suoi file restano sul server, una vulnerabilità al loro interno può essere ancora sfruttabile. I plugin che non usi vanno eliminati, non solo disattivati.

Devo passare a un altro provider di hosting?

Spostare il sito non rimuove il malware, e un sito infetto spostato su un nuovo server resta infetto. Cambiare provider può avere senso per altri motivi, ma solo dopo che il sito è stato ripulito.

Per quanto tempo devo monitorare il sito dopo la pulizia?

Almeno qualche settimana, controllando se compaiono nuovi file, nuovi utenti e comportamenti insoliti. Alcune backdoor vengono usate solo di tanto in tanto, quindi un breve periodo tranquillo non dimostra che il sito sia pulito.

Temi e plugin nulled sono davvero un rischio?

Sì. Arrivano da fonti non ufficiali, non ricevono aggiornamenti di sicurezza e possono già contenere codice dannoso. Sostituirli con copie con licenza fa parte di qualsiasi pulizia seria.

D4Hub può aiutarmi se un’altra azienda ha già ripulito il sito?

Sì. Condividi quello che sai sulla pulizia precedente. D4Hub può verificare cosa è stato tralasciato, trovare il punto di accesso e aiutarti a interrompere il ciclo.

Risorse correlate

Servizi e tecnologie correlati