Pattern aggregato anonimizzato · marzo-maggio 2026

Negli ultimi 90 giorni abbiamo osservato 12 attacchi WordPress con la stessa firma tecnica: file PHP con doppia estensione caricati nella directory wp-content/mu-plugins/. Il pattern non è documentato dalla maggior parte degli scanner commerciali. Ecco cosa abbiamo imparato.

Cos'è il pattern

Apache (e quindi cPanel hosting tipici) sono configurati con FcgidWrapper .php o AddHandler application/x-httpd-php .php. La regola di matching usa la regex \.php$ (l'estensione finale).

Questo significa che:

Ma molti scanner di sicurezza WordPress (anche quelli premium) usano filtri come:

Il risultato: il file viene eseguito da Apache ma è invisibile al security scanner.

Esempi reali (anonimizzati)

Su 12 siti che abbiamo recuperato negli ultimi 90 giorni, abbiamo trovato pattern come:

Caratteristiche comuni dei file:

Perché il pattern continua a funzionare

Wordfence Free e MalCare Free non scansionano mu-plugins/ ricorsivamente. Wordfence Premium lo fa ma il loro pattern matcher per .php non gestisce correttamente la doppia estensione (verificato su versione 8.0.5 a maggio 2026).

Sucuri SiteCheck (lato remoto) può rilevare il danno solo se l'attaccante ha già injected redirect visibili pubblicamente. Se la backdoor è "silente" (solo command-and-control), Sucuri vede HTTP 200 e dice "tutto ok".

Patchstack non si occupa di scanning filesystem — fa solo CVE feed.

Cosa puoi fare ora

Se gestisci un sito WordPress:

  1. Esegui questo comando via SSH (se hai accesso):

`` find /home/USER/public_html -name ".php." 2>/dev/null `` Deve ritornare 0 risultati. Se trovi qualcosa, sei già compromesso.

  1. Se non hai SSH, via cPanel File Manager:

- Naviga a wp-content/mu-plugins/ - Conta i file: dovrebbero essere 0-2 (solo plugin che HAI installato come "must-use") - Se vedi file con nomi random tipo 01-mu-XxxYyy.php o doppia estensione, sospetto

  1. Audit del cron WP in wp-admin:

- Plugin "WP Crontrol" (free) → mostra tutti gli hook scheduled - Cerca hook con nomi sospetti: puc_cron_check_updates-, run_weekly_partner_ da theme che non hai installato

  1. Verifica wp_options.cron via phpMyAdmin:

- Cerca hook che riferiscono plugin che non sono in wp-content/plugins/ - Esempi noti compromessi: hook scheduling files in mu-plugins/ via wp_schedule_event

Come WPSonar gestisce questo

Il nostro scanner controlla esplicitamente:

In 12 incident gestiti negli ultimi 90 giorni, nessun cliente ha dovuto pagare un consulente esterno o ripristinare backup. Il fix è automatico e arriva entro 6 ore dalla detection.

Domande frequenti

Cos'è un attacco mu-plugins in WordPress?

I mu-plugins (must-use plugins) sono file PHP nella cartella wp-content/mu-plugins/ che WordPress carica automaticamente a ogni richiesta, prima dei plugin normali e senza che compaiano nella lista plugin attivi. Un attaccante che riesce a scrivere qui ottiene esecuzione di codice persistente e difficile da notare.

Perché Wordfence non trova i file .php.php?

Molti scanner derivano il nome file con funzioni come basename($file, '.php') o filtrano con glob('*.php'), che gestiscono male la doppia estensione. Apache invece esegue come PHP qualunque file che termini in .php (regex \.php$), quindi attack.php.php viene eseguito ma saltato dallo scanner.

Come controllo se ho file sospetti nei mu-plugins?

Via cPanel File Manager naviga a wp-content/mu-plugins/ e conta i file: dovrebbero essere 0-2, solo quelli che hai installato come must-use. Qualsiasi file con nome random tipo 01-mu-XxxYyy.php o con doppia estensione è sospetto. Se hai accesso SSH: find /home/USER/public_html -name '.php.' deve restituire zero risultati.

I file con doppia estensione sono sempre malware?

Praticamente sì, nel contesto di un sito WordPress in produzione. Nessun plugin o tema legittimo crea file .php.php. La doppia estensione serve esclusivamente a confondere gli scanner che cercano l'estensione .php letterale, mantenendo l'esecuzione lato Apache.

Fonti tecniche