Cos'è JavaScript Obfuscation e perché è una minaccia?


Risposte:


38

L'offuscamento è un mezzo per "oscurare" il vero significato e l'intento del tuo codice javascript. Alcuni siti lo usano come ostacolo per le persone che vogliono copiare / prendere in prestito il loro codice. Altri siti lo usano come mezzo per nascondere l'effettiva intenzione del codice.

Alcune forme di oscuramento:

  1. Rinominare automaticamente le variabili in nomi insignificanti per rendere il codice meno leggibile e più difficile da comprendere.
  2. Rimozione di tutti gli spazi extra e le interruzioni di riga in modo che il codice sia una lunga linea gigante.
  3. Realizzare parti del codice auto-generate in modo che venga eseguito un primo passaggio del codice per creare il codice effettivo che viene quindi eseguito per eseguire l'operazione prevista.
  4. Utilizza i codici carattere e la manipolazione delle stringhe combinati con il codice javascript anziché normale per costruire il codice effettivo che verrebbe eseguito.

L'oscuramento non è di per sé un male, ma può essere usato per cercare di nascondere un intento malvagio e questo è probabilmente ciò a cui AVG stava obiettando. Ha rilevato così tanta oscurità che non riusciva a capire se il javascript stesse cercando di fare qualcosa che stava cercando di prevenire. Come tale, ha dichiarato il codice come non sicuro per impostazione predefinita poiché non può verificare che il codice sembri OK.


Questo è quello che pensavo, ma volevo verificare. Grazie per il chiarimento.
L84,

Se AVG sta bloccando l'accesso a un sito Web noto e affidabile, probabilmente è possibile ignorarlo. Non suggerirei che se non conosci il rappresentante dei siti.
uSlackr,

4
Alcuni siti usano la compressione js in modo che si carichi più velocemente (bene in quasi tutti), il codice sembrerà offuscato.
jcubic,

9
1e 2sono anche eseguiti da compressori javascript. I compressori offuscano il codice come effetto collaterale, ma non è questo il loro scopo principale; il loro scopo principale è quello di ridurre il javascript, ridurre la larghezza di banda.
BlueRaja - Danny Pflughoeft,

5. Viene anche utilizzato per comprimere i file JS per download più rapidi. Yahoo lo ha fatto da quando sono stati sul Web e anche gli strumenti di Google per la creazione di applicazioni Web (come GMail e Calendar).
Chloe,

13

L'offuscamento si riferisce a nascondere il significato previsto di qualcosa.

In questo caso, uno snippet JavaScript chiaramente leggibile, come ad esempio

window.onload = function() { alert("Hello " + username) };

può essere sostituito da

var _0xc5b2=["\x6F\x6E\x6C\x6F\x61\x64",
        "\x48\x65\x6C\x6C\x6F\x20"];window[_0xc5b2[0]]=
    function (){alert(_0xc5b2[1]+username);} ;

o anche

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hello%20%22%5D%3Bwindow"+
  "%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
  "%29%3B%7D%20%3B"));

Tutti e tre i frammenti di codice fanno esattamente la stessa cosa, ma solo leggere il primo ti permetterà di capirne facilmente le intenzioni.

Apparentemente, AVG tenta di comprendere lo scopo del codice JavaScript prima di consentirne l'esecuzione. Quando il codice viene offuscato, AVG probabilmente fallirà. Da qui l'avvertimento.

Detto questo, alcuni siti Web offuscano il loro JavaScript non a causa di cattive intenzioni, ma per rendere difficile rubare il loro lavoro. L'offuscamento di solito è inutile se usato per questo scopo, ma il punto è che l'offuscamento non significa necessariamente cattive intenzioni.


3
Anche se come ho spesso trovato, il codice di disintossicazione mi ha spesso mostrato che nasconde javascript in codice malvagio che non vale la pena rubare. È un segno che il programmatore trascorre più tempo a preoccuparsi del furto rispetto alla corretta tecnica di programmazione e non riesce nemmeno a ottenere l'offuscamento giusto, quindi è facilmente crackabile. Le uniche persone che hanno dedicato del tempo a rendere il codice davvero difficile da disintossicare sono i programmatori di malware, motivo per cui AVG lo segnala come un ottimo motivo per evitare il sito.
Fiasco Labs,

2
AVG è una macchina, non un essere umano. Ovviamente, una macchina può capire il codice, che è come quel codice fa la stessa cosa. Inoltre, le persone di solito non guardano Javascript quando navigano. Questo è semplicemente un caso di "colpa per associazione". Alcuni Javascript che sono pericolosi usano determinati schemi di offuscamento. Pertanto, altri Javascript con schemi simili sono sospetti.
Kaz,

@Kaz: era solo un esempio, ma esistono metodi più sofisticati di offuscamento che richiedono la comprensione di un motore JavaScript. Gli scanner di malware in genere cercano determinati pattern invece di eseguire gli script, per motivi di prestazioni.
Dennis,

essere teoricamente senza valore e praticamente senza valore sono diversi - teoricamente, il codice offuscante è inutile, concordato. Ma, se il costo della deobfuscatura è simile al costo della creazione di un nuovo codice (o addirittura, il costo diventa abbastanza alto da scoraggiare i ladri pigri), allora l'offuscamento per prevenire il furto sfrenato potrebbe essere utile.
Ronald,

Esatto, quindi la questione non è l'offuscamento in , ma la somiglianza del codice con il codice dannoso noto.
Kaz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.