Come rimuovere un malware da WordPress
In questa guida vedremo come rimuovere un malware da un sito WordPress e quali controlli effettuare per evitare che l’infezione si ripresenti.
Quando un sito viene infettato da un malware può iniziare a mostrare annunci pubblicitari o popup indesiderati, effettuare redirect verso siti esterni, modificare i contenuti delle pagine oppure presentare altri comportamenti anomali.
È quindi fondamentale intervenire il prima possibile, sia per evitare possibili conseguenze sulla visibilità del sito sui motori di ricerca e sulla fiducia degli utenti, sia per ridurre i rischi legati ai dati presenti sul sito.
La compromissione può inoltre avere conseguenze economiche importanti.
Un sito non raggiungibile, un e-commerce compromesso o un modulo di contatto che non funziona correttamente possono tradursi in una perdita diretta di richieste e vendite.
- 1. Come effettuare la rimozione di un malware su WordPress
- 1.1. Prima di iniziare, effettua un backup completo
- 1.2. Metti in sicurezza gli accessi
- 1.3. Aggiorna o sostituisci il core di WordPress
- 1.4. Controlla la presenza di file sospetti
- 1.5. Controlla la cartella wp-content
- 1.6. Reinstalla plugin e temi da una fonte affidabile
- 1.7. Analizza i file con Codex
- 1.8. Controlla gli utenti amministratori
- 1.9. Controlla il database
- 1.10. Controlla .htaccess e gli altri file di configurazione
- 1.11. Verifica che il malware sia stato rimosso
- 2. Come evitare che WordPress venga nuovamente infettato
- 3. Conclusioni
Come effettuare la rimozione di un malware su WordPress
Prima di iniziare è importante fare una precisazione: non esiste una procedura universale per rimuovere un malware da WordPress.
Il metodo da utilizzare dipende dal tipo di infezione, dai file modificati, dall’eventuale compromissione del database e soprattutto dalla vulnerabilità o dalle credenziali utilizzate dall’attaccante per ottenere l’accesso al sito.
Rimuovere semplicemente il file che contiene il codice malevolo potrebbe quindi non essere sufficiente.
Se la vulnerabilità che ha permesso l’infezione rimane presente, oppure se l’attaccante dispone ancora di credenziali valide, il sito potrebbe essere compromesso nuovamente.
WordPress stesso raccomanda di mantenere aggiornati il core, i plugin e i temi e di utilizzare software proveniente da fonti affidabili.
Prima di iniziare, effettua un backup completo
Prima di modificare o eliminare qualsiasi file, è consigliabile creare una copia completa del sito, anche se attualmente è già compromesso.
Il backup dovrebbe comprendere almeno:
- i file presenti sul server
- il database MySQL/MariaDB
- il file wp-config.php
- eventuali configurazioni personalizzate del server.
Anche un backup dell’installazione compromessa può essere utile durante l’analisi, perché potrebbe permettere di confrontare i file e ricostruire ciò che è successo.
WordPress considera il backup dei file e del database una componente fondamentale della strategia di sicurezza e ripristino.
Metti in sicurezza gli accessi
Prima di procedere con la pulizia è opportuno ridurre la possibilità che l’attaccante possa continuare ad accedere al sito.
Se sospetti che siano state compromesse delle credenziali, modifica
- Password degli utenti amministratori WordPress
- Password FTP/SFTP
- Password del pannello di controllo dell’hosting
- Password del database, se necessario
- Password altre credenziali utilizzate per accedere al sito.
È inoltre consigliabile rigenerare le chiavi e i salt presenti nel file wp-config.php, utilizzando lo strumento ufficiale messo a disposizione da WordPress.
Una volta generate le nuove chiavi, dovrai sostituire quelle attualmente presenti nel file di configurazione con i nuovi valori.
La documentazione ufficiale di WordPress suggerisce inoltre, in caso di compromissione del sito, di intervenire sugli accessi e di modificare le credenziali, in particolare quelle degli account amministrativi.
Aggiorna o sostituisci il core di WordPress
Uno dei primi controlli da effettuare riguarda i file del core di WordPress.
Se alcuni file sono stati modificati, è preferibile non cercare di ripulirli manualmente quando è possibile sostituirli con una copia originale della stessa versione o, meglio ancora, aggiornare WordPress a una versione supportata e aggiornata.
Se non puoi utilizzare l’aggiornamento automatico, puoi effettuare un aggiornamento manuale caricando una copia ufficiale di WordPress e sostituendo i file dell’installazione.
In particolare, le cartelle wp-admin e wp-includes non dovrebbero contenere modifiche effettuate normalmente dal proprietario del sito.
Durante questa operazione presta particolare attenzione a non sovrascrivere:
- wp-content
- wp-config.php
- eventuali file personalizzati che non fanno parte del core.
Puoi comunque seguire il mio tutorial su come aggiornare manualmente WordPress, poiché la procedura di sostituzione dei file è sostanzialmente la stessa.
Controlla la presenza di file sospetti
Dopo aver ripristinato il core, è necessario controllare il resto dell’installazione.
Una prima possibilità consiste nell’utilizzare un plugin di sicurezza come Wordfence, in grado di effettuare una scansione dei file presenti sul sito e confrontarli con quelli attesi.
Uno scanner può essere molto utile per individuare file modificati, codice sospetto o file che non dovrebbero essere presenti nell’installazione.
Non bisogna però considerare la scansione automatica come una garanzia assoluta di rimozione del malware.
Una scansione può non rilevare tutte le forme di compromissione e, soprattutto su hosting con risorse limitate, potrebbe non riuscire a completarsi.
Per questo motivo, in presenza di un’infezione persistente è consigliabile effettuare anche un’analisi manuale.
Controlla la cartella wp-content
La directory wp-content merita particolare attenzione perché contiene plugin, temi, upload e altri file che possono essere modificati o utilizzati per introdurre codice malevolo.
Un controllo particolarmente importante riguarda la directory:
wp-content/mu-plugins
I cosiddetti Must-Use Plugins sono plugin che WordPress carica automaticamente e che, a differenza dei plugin tradizionali, non vengono gestiti attraverso la normale procedura di attivazione e disattivazione.
Per impostazione predefinita si trovano nella directory wp-content/mu-plugins.
I file PHP presenti direttamente in questa directory vengono caricati automaticamente da WordPress.
Questo significa che un file PHP sospetto presente in questa cartella può essere particolarmente importante da verificare.
Non bisogna però eliminare automaticamente ogni file presente in mu-plugins.
Alcuni hosting e alcuni plugin utilizzano legittimamente questa funzionalità, ad esempio Hostinger li utilizza per gestire l’accesso diretto tramite l’apposito pulsante nella gestione del sito.
Se non riconosci un file, prima di eliminarlo è quindi opportuno verificarne la provenienza.
Reinstalla plugin e temi da una fonte affidabile
Una delle operazioni più efficaci per evitare di lasciare codice modificato all’interno di plugin e temi consiste nel reinstallarli utilizzando una copia originale.
Per i plugin disponibili sul repository ufficiale puoi scaricare il pacchetto direttamente da WordPress.org.
Per i plugin commerciali utilizza invece il sito ufficiale dello sviluppatore o l’area clienti dalla quale hai acquistato il prodotto.
Evita di utilizzare copie scaricate da siti non ufficiali, anche se apparentemente identiche a quelle originali.
Per ogni plugin puoi quindi procedere in questo modo:
- Scarica una copia aggiornata e originale
- Rimuovi la versione presente sul sito
- Carica il file ZIP originale
- Installa nuovamente il plugin
- Verifica che il sito continui a funzionare correttamente.
La stessa procedura può essere applicata ai temi.
Se il tema contiene personalizzazioni, però, fai attenzione: reinstallarlo potrebbe eliminare modifiche effettuate direttamente nei suoi file.
In questi casi è preferibile utilizzare un child theme per le personalizzazioni.
Analizza i file con Codex
Se l’infezione non viene individuata attraverso gli strumenti tradizionali, può essere utile effettuare un’analisi manuale del codice.
In questo caso puoi scaricare localmente i file sospetti, o una copia della directory wp-content, e utilizzare uno strumento di analisi del codice basato sull’intelligenza artificiale come Codex.
L’obiettivo non dovrebbe essere chiedere semplicemente a Codex di “trovare il malware”, ma di analizzare il codice alla ricerca di comportamenti anomali, codice offuscato, funzioni utilizzate per eseguire codice dinamicamente, richieste HTTP verso domini non riconosciuti, modifiche sospette ai file e possibili vulnerabilità.
Per esempio, puoi chiedere di analizzare un plugin o un tema con una richiesta simile:
Analizza questi file WordPress dal punto di vista della sicurezza. Cerca codice offuscato, backdoor, meccanismi di persistenza, richieste HTTP sospette, esecuzione dinamica di codice e comportamenti che potrebbero indicare una compromissione. Per ogni elemento sospetto indica il file, la posizione approssimativa e spiega perché dovrebbe essere verificato. Non modificare i file.
È importante considerare questa analisi come un supporto e non come una prova definitiva della presenza o dell’assenza di malware.
Un modello può individuare comportamenti sospetti che uno scanner tradizionale potrebbe non evidenziare, ma può anche produrre falsi positivi o non riconoscere una determinata tecnica di compromissione.
Per analisi di sicurezza più strutturate, OpenAI mette inoltre a disposizione Codex Security, progettato per individuare e validare vulnerabilità nei repository di codice e proporre correzioni da sottoporre a revisione umana.
Quando utilizzi strumenti di analisi del codice, evita inoltre di caricare credenziali, password, chiavi API o altri segreti presenti nei file di configurazione.
Controlla gli utenti amministratori
Dopo aver analizzato i file, è importante verificare anche gli utenti presenti all’interno di WordPress.
Accedi alla sezione Utenti → Tutti gli utenti e controlla se sono presenti account amministrativi che non riconosci.
Un malintezionato potrebbe infatti aver creato un nuovo account amministratore per mantenere l’accesso al sito anche dopo la rimozione del malware.
Se trovi un utente che non dovrebbe essere presente:
- Verifica prima che non si tratti di un account legittimo
- Controlla il suo ruolo
- Rimuovi l’utente se non è autorizzato
- Verifica gli altri account amministrativi presenti.
Non limitarti quindi alla rimozione dei file sospetti: un account compromesso può permettere di reinfettare il sito anche dopo una pulizia apparentemente completa.
Controlla il database
Un malware non deve necessariamente essere contenuto in un file PHP.
In alcuni casi il codice o i contenuti indesiderati possono essere stati inseriti direttamente nel database, ad esempio all’interno degli articoli, delle opzioni di WordPress o di altri dati gestiti dai plugin.
Se dopo la pulizia dei file il problema continua a manifestarsi, è quindi opportuno controllare anche il database.
Particolare attenzione dovrebbe essere prestata a:
- Redirect non riconosciuti
- Codice JavaScript inserito negli articoli
- Contenuti HTML sospetti
- URL esterni non autorizzati
- Opzioni WordPress modificate senza motivo.
In questa fase è consigliabile procedere con particolare cautela e avere sempre un backup del database prima di effettuare modifiche.
Controlla .htaccess e gli altri file di configurazione
Un’altra area da controllare è rappresentata dai file di configurazione del server.
Nel caso di Apache, ad esempio, è opportuno verificare il contenuto del file .htaccess alla ricerca di regole che non riconosci, in particolare redirect o condizioni che modificano il comportamento delle richieste HTTP.
Anche in questo caso non bisogna eliminare automaticamente ogni regola non riconosciuta.
Alcuni plugin e alcune configurazioni dell’hosting possono modificare legittimamente questi file.
Il confronto con una configurazione precedente o con una copia di backup può essere particolarmente utile.
Verifica che il malware sia stato rimosso
Una volta completata la pulizia, non considerare il lavoro terminato immediatamente.
Esegui nuovamente una scansione con lo strumento di sicurezza che hai utilizzato in precedenza e controlla che i sintomi dell’infezione siano scomparsi.
Verifica inoltre:
- Homepage e pagine interne
- Redirect
- Moduli di contatto
- Login WordPress
- Funzionalità dell’e-commerce, se presente
- File modificati recentemente
- Utenti amministratori
- Eventuali segnalazioni di sicurezza dei motori di ricerca.
Se il sito era stato segnalato come compromesso da Google o da un altro servizio, dopo aver verificato che l’infezione sia stata effettivamente rimossa sarà necessario seguire la procedura prevista dal servizio per richiedere una nuova verifica.
Come evitare che WordPress venga nuovamente infettato
La rimozione del malware risolve il problema attuale, ma non necessariamente la causa che ha permesso all’attaccante di entrare nel sito.
Per ridurre il rischio di una nuova compromissione:
- Mantieni aggiornati WordPress, plugin e temi
- Rimuovi plugin e temi che non utilizzi
- Non installare plugin o temi nulled
- Usa password uniche e robuste
- Abilita l’autenticazione a due fattori, quando disponibile
- Limita gli accessi FTP e preferisci SFTP quando disponibile
- Effettua backup regolari
- Verifica periodicamente gli utenti amministratori
- Monitora eventuali modifiche anomale ai file.
La sicurezza di WordPress non dipende quindi da un singolo plugin di sicurezza, ma da un insieme di misure preventive, aggiornamenti, backup e controllo degli accessi.
Gestire correttamente tutti questi aspetti richiede però tempo e una certa competenza tecnica. Se preferisci delegare la manutenzione e la gestione del tuo sito WordPress, puoi scoprire il mio servizio di gestione WordPress, pensato per mantenere il sito aggiornato, sicuro e sotto controllo nel tempo.
Conclusioni
La rimozione di un malware da WordPress, come abbiamo visto, può risultare lunga e complessa, soprattutto per chi non ha competenze tecniche oppure non ha la possibilità o il tempo necessario per analizzare correttamente il proprio sito WordPress.
In questi casi può essere preferibile affidarsi a un professionista, che possa occuparsi della bonifica del sito, individuare la possibile causa dell’infezione e intervenire per ridurre il rischio che il problema si ripresenti.
Se preferisci delegare la gestione di questi interventi e hai bisogno di assistenza per il tuo sito WordPress, puoi scoprire il mio servizio di assistenza WordPress nel banner qui sotto.
Hai bisogno di assistenza WordPress?
Assistenza WordPress professionale per chi vuole risolvere errori e problemi tecnici senza perdere tempo prezioso, o per chi preferisce delegare la gestione del proprio sito.
Un esperto WordPress freelance con oltre 10 anni di esperienza, interventi rapidi entro 24 ore e garanzia soddisfatti o rimborsati.
A partire da 29€ al mese