Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Samy is my hero: Ajax o della sicurezza

Ajax è una grande invenzione, ma dopo l'ubriacatura della novità cominciamo a pensare anche alla sicurezza
Ajax è una grande invenzione, ma dopo l'ubriacatura della novità cominciamo a pensare anche alla sicurezza
Link copiato negli appunti

Ajax è davvero una bella tecnologia. La capacità  di riportare le interazioni fra web server e l'interfaccia in modalità  asincrona conferisce più fluidità  di utilizzo e una migliore, come si dice, "user experience". Ma, nel campo delle applicazioni software, aggiungendo complessità  spesso si aggiunge anche minor controllo.

Un tale Samy, qualche giorno fa, ha "bucato" Myspace.com, una delle più grandi comunità  di relazioni sul Web, utilizzando le potenzialità  di Ajax. Il giovane, che ha 19 anni e si definisce un "playboy/software developer", ha semplicemente aggiunto al proprio profilo del codice JavaScript che non solo, anche grazie alla complicità  del browser, ha eluso i diversi controlli dell'applicazione Web, ma è riuscito a rendersi praticamente invisibile all'esecuzione utilizzando l'oggetto XMLHTTPRequest.

Ogni utente che visualizzava il profilo di Samy aggiungeva, automaticamente, lo stesso Samy al suo elenco di amici. Se nel profilo dell'utente "aggredito" era previsto anche l'elenco di "heroes", Samy si aggiungeva anche a quello con la frase "but most of all, samy is my hero". Non finisce qui: il codice venica incluso nel profilo dell'utente aggredito, propagandosi esponenzialmente. In meno di 24 ore Samy aveva oltre un milione di nuovi amici ed un nuovo business.

L'aggiunta e la modifica del profilo solitamente richiedono l'intervento dell'utente. Per rendere i vari GET e POST silenziosi, il nostro Samy ha utilizzato un tipico oggetto Ajax (XMLHTTPRequest) che, lavorando in sottofondo, eseguiva tutte le procedure all'insaputa del navigatore.

Sfruttare una simile vulnerabilità  non in remote scripting, ma con i normali linguaggi lato server asincroni (sì, i vecchi Click-and-Wait), sarebbe stato più complesso e più visibile, ma ugualmente fattibile. Tuttavia il principio generale di minor controllo dell'utente sui dati inviati, proprio di Ajax, vale in generale ed è ben descritto da un articolo su Devx.com:

Oggi, la profilazione serve ai gestori di siti per individuare tendenze, visualizzare le abitudini di navigazione o problemi di usabilità . Fino ad oggi gli sviluppatori potevano solo analizzare dati ("posted data") che gli utenti decidono di inviare. [...] Con Ajax le azioni degli utenti possono essere costantemente monitorate. Tutto cià che può essere fatto, viene effettivamente fatto [...]. Pensate, per esempio, se un giorno il vostro iPod cade e smette di funzionare. Sperando nella sostituzione in garanzia, scrivete una mail al supporto Apple che recita: "Ho comprato da poco un iPod. L'ho fatto cadere per le scale. Ora ha smesso di funzionare". Per evitare problemi, potete decidere di cancellare il secondo periodo. TROPPO TARDI! Se il sito utilizza Ajax, la tua richiesta potrebbe essere già  stata inviata.

Ti consigliamo anche