php.bkdr.incl: una riga di include che carica la backdoor da un altro file
php.bkdr.incl è la firma di una backdoor costruita in due pezzi: una riga di include o require aggiunta a un file legittimo, e un secondo file che contiene il codice vero, spesso con un'estensione innocua come .ico, .txt o .log. Nel corpus di misura di WPsec.it dell'agosto 2026 compare su 7 domini e 4 server; il 25% dei rilevamenti sta nel tema e il 49% dei file ha un nome predicibile, perché la riga di include viene messa in file che WordPress carica sempre, come functions.php o wp-config.php.
Famiglia: Backdoor via include · Anche noto come: bkdr.incl, incl.enc · Aggiornato il 1 settembre 2026
Le stringhe esatte
Se hai trovato una di queste stringhe sul tuo sito, sei nella pagina giusta.
php.bkdr.inclSMW-INJ-CLOUDAV-php.bkdr.inclphp.bkdr.incl.encphp.tool.incl
Dove si trova
- In wp-content/themes nel 25% dei casi, quasi sempre in functions.php o in header.php del tema attivo
- Nella radice e nei file di configurazione: wp-config.php e index.php sono i bersagli classici perché vengono eseguiti a ogni richiesta
- Il file incluso sta altrove, con estensione non PHP: la firma può scattare su uno solo dei due pezzi
Cosa fa
- Carica ed esegue, a ogni richiesta, un file che il web server non eseguirebbe mai da solo.
- Separa l'innesco dal carico: se cancelli il carico, l'include dà errore e il sito può rompersi; se cancelli l'include, il carico resta pronto per essere riagganciato.
- Nella variante enc il carico è cifrato e viene decifrato in memoria: sul disco non si legge nulla di sospetto.
Come verificare
Comandi di sola lettura: non modificano nulla. Sostituisci ESEMPIO.it con il tuo dominio ed esegui dalla radice del sito.
Cerca include e require che puntano a file con estensione non PHP
grep -rn --include='*.php' -E '(include|require)(_once)?\s*\(?\s*[^;]*\.(ico|txt|log|dat|jpg|png|gif|css|js|json)["\x27]' . | head -20Cerca include costruiti con variabili o concatenazioni, tipici del camuffamento
grep -rn --include='*.php' -E '(include|require)(_once)?\s*\(?\s*(\$[a-zA-Z_]+|["\x27][^"\x27]*["\x27]\s*\.)' wp-content/themes/ wp-config.php index.php 2>/dev/null | head -20Confronta i file del tema con l'originale
wp theme verify-checksums --all 2>/dev/null || echo 'tema non del repository: confronta con la copia del fornitore'
Cosa non basta fare
- Rimuovere il file incluso e lasciare la riga di include: il sito va in errore e la riga è pronta per un nuovo carico.
- Rimuovere la riga di include e lasciare il file: il carico resta sul disco, in attesa.
- Cercare solo file .php: il carico ha quasi sempre un'altra estensione.
Cosa fare
- Trova entrambi i pezzi: la riga di include dice dove sta il carico, e il carico va rimosso insieme alla riga.
- Sostituisci i file legittimi modificati con gli originali del tema o del core, non con il backup.
- Cerca altri file con estensione innocua che contengono PHP: la stessa tecnica viene usata più volte sullo stesso sito.
- Chiudi il vettore di ingresso: chi ha modificato functions.php aveva accesso in scrittura, e quell'accesso va capito.