eBay a rischio di hacking: attenti a dove cliccate

eBay, il popolare sito marketplace e di aste online, non riesce a chiudere una pericolosa falla nel suo sistema e lascia gli utenti meno esperti esposti a un grosso rischio.

Avatar di Giancarlo Calzetta

a cura di Giancarlo Calzetta

-

eBay è uno dei siti più popolari del mondo, ma a quanto pare questo non basta per renderlo anche a prova di hacker.

Un potenziale malintenzionato, infatti, potrebbe usare una speciale tecnica nota con il colorito nome di "JSFUCK" per inserire dei javacript nel codice di una inserzione, facendo poi in modo che tale codice venga eseguito sul browser che visita la pagina.

Le conseguenze per la sicurezza e la privacy della vittima dipendono solo da cosa il malintenzionato vuole diffondere. Come si vede dal video qui sotto, forzare il download di altre applicazioni risulta quantomeno semplice e gli utenti sono portati a fidarsi del contenuto in quanto lo vedono apparire dal sito ufficiale.

La vulnerabilità nasce dal fatto che il sito di eBay ha sì dei controlli per evitare che del codice iFrame o javascript venga incorporato nelle inserzioni, ma a quanto pare si fermano all'analisi dei normali caratteri alfanumerici.

La tecnica JSFUCK, invece, permette di scrivere javascript perfettamente eseguibili ricorrendo a una serie di caratteri speciali che non vengono filtrati dai sistemi di sicurezza di eBay.

image1
Ecco come si presenta un normale codice Javascript

image2
Questo, invece, è un codice javascript "camuffato" con la tecnica del JS**CK. L'assenza di caratteri alfanumerici lo lascia passare inosservato ai filtri attivi su eBay.

Il ricercatore Oded Vanunu, in forze all'azienda specializzata in sicurezza CheckPoint, fa notare che la sua azienda ha scoperto già lo scorso anno e il 15 dicembre 2015 ha comunicato al colosso statunitense tutti i dettagli del potenziale attacco.

Il 16 di gennaio, però, eBay ha risposto che non sapevano quando avrebbero chiuso tale vulnerabilità. Stamane, dopo che la stampa internazionale ha iniziato a parlare del caso, un portavoce del sito di aste online ha dichiarato che eBay ha ovviamente a cuore la sicurezza dei suoi utenti, ma ancora non ha specificato quando contano di rimettere tutto in sicurezza.

Ci tengono a precisare che al momento i filtri sono stati aggiornati e che su eBay, pur permettendo da sempre l'inserimento di codice attivo, si ha una quantità estremamente bassa di inserzioni malevole: nell'ordine dei due annunci su un milione.

Va inoltre detto che, di per sé, l'inserimento di un Javascript in una pagina non è sufficiente a infettare una macchina, a meno di sfruttare ulteriori vulnerabilità, ma permette ugualmente una serie di operazioni che possono portare a phishing molto efficaci (quanti utenti poco esperti non compilerebbero un form che appare direttamente nella pagina di eBay che stanno visitando) o download che si possono poi far eseguire all'utente con un minimo di ingegneria sociale.

Un utente del sito Arstechnica, noto come rabish12, si è anche preso il disturbo di spiegare come funziona la tecnica JSFUCK.

In pratica, gli oggetti Javascript sono un insieme di chiavi/valori, con la chiave che è a sua volta una stringa. Di conseguenza, si può accedere alle proprietà di un oggetto tramite una stringa.

I constructor delle funzioni convertono le stringhe in funzioni eseguibili e quindi se si riesce a sfruttare questa caratteristica si può generare codice eseguibile senza usare caratteri alfanumerici.

Per esempio: se si vuol far apparire un popup con la scritta "ciao a tutti", si può scrivere

[]["filter"]["constructor"]( "alert('ciao a tutti')" )()

Il primo [] crea una matrice vuota. La sezione "filter" accede alla proprietà filter della matrice vuota, che è una funzione.

Il "Constructor" ottiene un costructor per le funzioni. ( "alert(ciao a tutti)" ) passa una stringa che contiene lo script al constructor che, a sua volta, restituisce una nuova funzione con al suo intern lo script. Infine, il () esegue la nuova funzione.

Dal momento che ogni carattere alfanumerico è incluso nelle virgolette, si può convertire ognuno di loro in caratteri non alfanumerici che possono poi esser trasformati in stringe. "Filter", per esempio, diventa:

 (![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]

Quando questo oggetto viene elaborato, Javascript si aspetta una stringa e lo converte automaticamente, facendolo tornare "filter". Applicando lo stesso concetto al resto, si scrive tutto il codice necessario.