Ondiz.

Guida · Sicurezza

WordPress violato: la lezione della catena di fornitura

Quando furono presi i siti degli «esperti»: vettori d'infezione, comportamento del malware e dieci mosse di hardening pratiche per il CMS più diffuso del web.

Cavi di rete aggrovigliati in una sala server, uno rosso tra i blu, metafora di un hosting compromesso

Quando la notizia di un portale della community italiana di WordPress compromesso fece il giro dei blog tecnici, la reazione collettiva fu di sorpresa: i siti «degli esperti», quelli che spiegavano agli altri come fare, erano stati presi come gli altri. Fu una lezione salutare: la sicurezza di un WordPress non dipende dalla bravura di chi lo cura, ma dalla catena di fornitura del software — core, tema, plugin — e da come la si governa. Questa rilettura organizza quella lezione in un capitolo pratico.

Il vero punto di forza è il punto debole

WordPress alimenta una parte enorme del web perché il suo ecosistema di plugin e temi permette di costruire qualunque cosa in poche ore. Lo stesso ecosistema è la superficie d'attacco principale: un plugin popolare e trascurato dal suo autore è una porta aperta su milioni di siti contemporaneamente. Gli attaccanti non studiano il vostro sito: studiano i repository di plugin, cercano estensioni con vulnerabilità note e poi scandagliano il web per chi le porta ancora installate. La vostra importanza non c'entra; la vostra versione sì.

I vettori d'infezione più comuni

  • plugin e temi non aggiornati, o abbandonati dagli autori: la via maestra;
  • temi e plugin «nulled»: copie pirata dei commerciali, con codice aggiunto — il cavallo di Troia perfetto, perché lo installa volontariamente la vittima;
  • credenziali deboli: amministratori con password semplici su pagine di login esposte;
  • xmlrpc.php: interfaccia legittima usata per attacchi a dizionario e amplificazione;
  • hosting condiviso carente: il caso trattato nel protocollo per gli account violati.

Come si comportano le infezioni

Raramente danneggiano in modo visibile: il malware moderno è un inquilino silenzioso. Backdoor nella cartella degli upload che riaprono l'accesso dopo la pulizia; utenti amministrativi aggiunti con nomi legittimi; redirect condizionati scritti in .htaccess, attivi solo per i visitatori dai motori; cron falsi che reintegrano i file cancellati; mailer che trasformano il sito in server di spam. E se il provider segnala invio di posta dal vostro account, la compromissione è già avvenuta: si passa al protocollo, senza discussione. Per questo una bonifica parziale è spesso peggio di nessuna bonifica: insegna all'attaccante che la porta è ancora aperta.

Il segno più sottovalutato è il traffico: picchi di visite da paesi lontani verso pagine che non esistono più nella navigazione, richieste POST verso file dai nomi strani. La Search Console e i log del server raccontano questi pattern ben prima che il danno sia visibile — leggerli una volta al mese è la forma più economica di sicurezza che esista.

Hardening in dieci mosse

  1. aggiornamenti automatici per le versioni minori del core;
  2. inventario pulito: ogni plugin e tema installato è necessario, aggiornato, di fonte ufficiale;
  3. disattivare l'editor di file dal pannello amministrativo (una riga di configurazione);
  4. chiavi e salti unici e rigenerati;
  5. verifica a due fattori sull'accesso amministrativo;
  6. limitazione dei tentativi di accesso e URL di login non standard dove possibile;
  7. xmlrpc disattivato se non serve;
  8. permessi corretti: configurazione scrivibile solo dal proprietario, upload senza esecuzione di codice;
  9. rete di distribuzione davanti con regole di protezione per il CMS — si collega alla guida all'edge;
  10. backup fuori sede, con restore provato.

Se il sito è già compromesso

Il protocollo è quello generale descritto per gli account di hosting violati: congelare, datare, confrontare, bonificare dalla copia pulita, aggiornare, verificare. Per WordPress un passo merita enfasi: la bonifica definitiva più affidabile è spesso la ricostruzione — core scaricato di fresco, plugin reinstallati dai repository ufficiali, contenuti ripristinati dal backup — perché elimina ciò che non si è riusciti a trovare.

Aggiornare non è un'opzione. Nel ecosistema WordPress la finestra tra l'annuncio di una vulnerabilità e gli scanner che la cercano si misura in ore. Chi rimanda di settimane non è prudente: è esposto.