CriticoCloaking e spam SEO

new Function con TextDecoder: il caricatore che si decodifica da solo

La combinazione di new Function con una stringa prodotta da TextDecoder, o di atob seguito da un Uint8Array e da un XOR, è un costrutto che serve a un solo scopo: costruire ed eseguire codice che non è leggibile nel sorgente. WPsec.it usa questa forma come firma nel proprio scanner e l'ha validata con zero falsi positivi su un corpus di circa 4.000 file JavaScript legittimi.

Famiglia: EtherHiding loader · Aggiornato il 30 agosto 2026

Le stringhe esatte

Se hai trovato una di queste stringhe sul tuo sito, sei nella pagina giusta.

  • new Function(new TextDecoder()
  • TextDecoder().decode
  • atob(

Dove si trova

  • Inline nell'HTML della pagina, spesso in fondo al body
  • Dentro un file JavaScript di un plugin o di un tema, appeso in coda al codice originale
  • In una option del database, iniettato nell'output tramite un hook

Cosa fa

  • Ricostruisce a runtime una stringa di codice e la esegue, quindi il codice vero non compare mai nel sorgente statico.
  • Permette di cambiare il carico senza modificare il sito: il caricatore resta identico, il contenuto scaricato cambia.
  • Rende inefficaci le ricerche testuali sul nome del dominio malevolo, che nel sorgente non è presente in chiaro.

Come verificare

Comandi di sola lettura: non modificano nulla. Sostituisci ESEMPIO.it con il tuo dominio ed esegui dalla radice del sito.

  1. Cerca la costruzione dinamica di codice nell'HTML servito

    curl -s https://ESEMPIO.it/ | grep -o 'new Function[^;]\{0,80\}'
  2. Cerca il costrutto nei file JavaScript del sito

    grep -rn --include='*.js' -E 'new Function\s*\(\s*new TextDecoder' wp-content/
  3. Cerca decodifiche di grandi blocchi seguite da operazioni bit a bit

    grep -rn --include='*.js' --include='*.php' -E 'atob\([^)]{60,}\)' wp-content/ | head -20

Cosa non basta fare

  • Cercare il dominio malevolo nel sorgente: in questa famiglia non è scritto in chiaro da nessuna parte.
  • Affidarsi a un blocco degli annunci o a un plugin di sicurezza lato browser: il codice viene eseguito dal sito, non caricato da un dominio noto.

Cosa fare

  • Isola il blocco e decodificalo in un ambiente separato prima di rimuoverlo: dice a quale campagna appartiene e cosa scaricava.
  • Cerca lo stesso costrutto in tutti i file JavaScript, non solo in quello trovato: le iniezioni di questa famiglia si moltiplicano.
  • Dopo la rimozione controlla il sorgente servito da più provenienze, perché la consegna può essere condizionata.

FAQ

Domande frequenti

  • Sì, alcuni template engine e strumenti di build lo usano. Quello che non compare nel codice legittimo è la combinazione specifica: costruire la stringa da decodificare con TextDecoder o da un blocco atob molto lungo, seguito da operazioni XOR su un Uint8Array. Nel corpus di circa 4.000 file JavaScript legittimi usato da WPsec.it per validare la firma, quella combinazione non compare mai.

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.