Caso reale anonimizzato · maggio 2026

Quando un sito WordPress viene hackato in modo serio, la domanda non è "se" si può recuperare. È quanto tempo, quanti soldi, e quanti dati si perdono nel processo. La risposta varia molto a seconda di chi gestisce la pulizia.

Questo è il timeline di un recovery che abbiamo fatto in 6 ore su un sito di un nostro cliente, completamente in autonomia AI-driven. Tutti i nomi e i dettagli identificativi sono rimossi; i numeri e la sequenza tecnica sono reali.

Cosa è successo

Il sito era una rivista nautica con circa 200 articoli pubblicati. Una mattina i visitatori hanno iniziato a vedere redirect a pagine di spam. Il proprietario ha provato ad accedere a wp-admin: errore 500. Il sito era ufficialmente compromesso.

L'attacco era multilivello:

Perché questo caso era diverso dal solito

I tipici scanner WordPress (Wordfence, Sucuri, MalCare) cercano file .php con pattern noti tipo funzioni di code-execution dinamica, decoder base64, codice obfuscato. Questa volta avevamo invece:

Il timeline (6 ore totali)

Ora 0 → 0:30 · Triage iniziale Sistema di monitoraggio rileva HTTP 500. Avvia automaticamente: backup completo via cPanel UAPI (tarball 58MB), snapshot DB completo, audit dei findings critici via external probe.

Ora 0:30 → 1:30 · Filesystem cleanup Helper PHP iniettato sul cliente via Fileman API scansiona ricorsivamente:

Ora 1:30 → 2:30 · DB users cleanup Query SQL diretta:

Ora 2:30 → 4:00 · Post content cleanup Scan SQL su wp_posts.post_content con 6 pattern:

Cleanup:

Risultato: 5 post pubblicati ripuliti (da 225KB → ~300 byte ciascuno), 18 revisions cancellate.

Ora 4:00 → 5:00 · Persistent fingerprint cleanup Lo step che gli scanner standard saltano: rimuovere gli "scarti del breach" che restano in wp_options:

Ora 5:00 → 6:00 · Verify visivo + hardening Visual rendering check con browser headless:

Quello che il cliente NON ha dovuto fare

Cosa puoi fare se non sei nostro cliente

Se gestisci un sito WP da solo:

  1. Verifica /wp-content/mu-plugins/ ogni mese · dovrebbe contenere 0-2 file di plugin che HAI installato esplicitamente. Tutti gli altri sono sospetti.
  2. Cerca file con doppia estensione in /public_html e /wp-content con: find . -name ".php." (deve essere 0 risultati)
  3. Audit utenti admin in wp-admin → Utenti → Filter "Amministratore". Se vedi nomi che non riconosci o pattern come sys_ o wp_ random, sei già stato bucato.
  4. Controlla wp_options via phpMyAdmin: admin_email, new_admin_email, auto_core_update_notified. Se contengono email che non sono tue, hai un problema serio.

Come WPSonar gestisce questo

Sui siti dei nostri clienti, una catena come quella descritta sopra viene neutralizzata in autonomia entro 6 ore dalla detection iniziale, senza richiedere alcun intervento del proprietario. Tutto è loggato nel nostro audit trail (append-only) e il cliente riceve un report di cosa è successo, cosa abbiamo fatto, e quali sono le nuove credenziali da cambiare.

Il sistema scansiona le 10 fonti pubbliche di threat intelligence (Patchstack, Wordfence Intelligence, Sucuri Blog, Reddit, WP Tavern, ecc.) ogni settimana per aggiornare i pattern di detection, in modo che attacchi simili al successivo cliente vengano riconosciuti subito.

Domande frequenti

Quanto tempo serve per recuperare un sito WordPress hackato?

Dipende dalla profondità del compromesso. Un attacco multilivello come quello descritto (file malware + database infetto + utenti rogue) richiede tipicamente 4-8 ore di lavoro tecnico. Con un sistema AI-driven che opera in autonomia il recovery completo è stato chiuso in 6 ore dalla detection, senza attesa di intervento umano.

Posso recuperare il sito senza perdere i contenuti?

Sì, se il cleanup è chirurgico invece di ripristinare un backup vecchio. Nel caso descritto i 1.411 post sono stati ripuliti dal JavaScript injected mantenendo il testo legittimo, e le revisioni infette sono state cancellate. Ripristinare un backup avrebbe fatto perdere tutti i contenuti pubblicati dopo la data del backup.

Come faccio a sapere se il mio sito WordPress ha file malware nascosti?

Controlla la cartella wp-content/mu-plugins/: dovrebbe contenere 0-2 file di plugin che hai installato esplicitamente. Cerca file con doppia estensione (find . -name '.php.' deve restituire zero risultati). Verifica gli utenti amministratore in wp-admin: nomi come sys_ o wp_ seguiti da caratteri random indicano una compromissione.

Gli scanner come Wordfence trovano tutto il malware?

No. Gli scanner filesystem standard non analizzano il contenuto del database (dove può vivere JavaScript injected nei post) e spesso saltano i file con doppia estensione .php.php. Un sito può apparire pulito a uno scanner e avere comunque malware attivo nel database o nei mu-plugins.

Fonti tecniche