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().decodeatob(
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.
Cerca la costruzione dinamica di codice nell'HTML servito
curl -s https://ESEMPIO.it/ | grep -o 'new Function[^;]\{0,80\}'Cerca il costrutto nei file JavaScript del sito
grep -rn --include='*.js' -E 'new Function\s*\(\s*new TextDecoder' wp-content/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.