CriticoFamiglia antivirus

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.incl
  • SMW-INJ-CLOUDAV-php.bkdr.incl
  • php.bkdr.incl.enc
  • php.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.

  1. 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 -20
  2. Cerca 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 -20
  3. Confronta 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.

FAQ

Domande frequenti

  • Sì, è il pattern esatto. Un file .ico non contiene codice PHP legittimo, e nessun tema ha motivo di includerlo. Rimuovi la riga, trova il file e rimuovi anche quello, poi sostituisci functions.php con l'originale del tema. La pagina sui file .ico, .txt e .log inclusi come PHP approfondisce il caso.

Se il sito è compromesso

Trovare la firma è il primo passo, chiudere la via di ingresso è quello che conta

Rimuovere l'artefatto senza chiudere il punto da cui è entrato porta alla reinfezione. La scansione gratuita è il modo più rapido per capire cosa è osservabile dall'esterno del tuo sito.

Questa pagina pubblica firme di rilevamento, non codice sfruttabile. I casi citati sono descritti in forma anonima.