Il baco di italianblogosphere
Qualche giorno fa un utente di oknotizie.com ha postato l’indirizzo ad
un articolo di un blog in cui era recensito un nuovo sito sul filone
di digg.com, dal nome italianblogosphere ([italianblogosphere.crispynews.com]).
Da bravi smanettoni ci siamo subito interessati al sito
e al suo funzionamento. Al contrario di quello che accade su digg.com,
anche italianblogosphere permette il voto degli utenti non registrati.
Anche noi di oknotizie abbiamo questa funzionalita’, e memori delle
tecniche che sono state necessarie per evitare un abuso di questa funzione
abbiamo subito visto che su italanblogosphere non tutti gli accorgimenti
necessari erano stati presi per prevenire un importante problema di
sicurezza.
Chiunque abbia un sito con un numero decente di visite puo’ infatti
decidere di portare in prima posizione qualunque news postata su
italianblogosphere (che da ora in poi chiameremo IB per brevita’).
Dettagli tecnici
A prescindere dal fatto che Ajax venga utilizzato o meno,
quando qualcuno vota una news su IB, il risultato e’ che il client
dell’utente effettua una richiesta alla seguente URL:
http: //italianblogosphere.crispynews.com/article/vote/
id-del-voto e’ un numero, il numero della news nel database.
Ovviamente il programma di IB controlla che non ci siano piu’ voti
da parte di un singolo indirizzo IP, ma questo controllo e’ insufficiente.
Tutto quello che serve per far schizzare la nostra news
preferita alle stelle e avere accesso ad un sito moderatamente
trafficato. Ammettiamo che l’attaccante, che chiamiamo Alice, abbia
un sito abbastanza visitato dal nome aliceblog.it.
Tutto quello che deve fare Alice e’ aggiungere qualcosa del genere nel
codice HTML di aliceblog.it:
Ogni volta che un utente visitera’ aliceblog.it fara’ involontariamente
una richiesta al programma di IB, che contabilizzera’ il voto (poiche’
l’IP dei visitatori di aliceblog.it variano).
Come e’ chiaro la notizia scelta da Alice volera’ velocemente verso la
prima posizione. Tanto piu’ aliceblog.it e’ trafficato, quanto piu’ velocemente
la notizia raggiungera’ la prima posizione. Con un sito da 500 visitatori
unici al giorno bastano alcuni minuti.
Soluzione
Non e’ complesso risolvere questo problema, tutto quello che serve
e’ utilizzare un po’ di crittografia, ad esempio lo schema della
URL potrebbe essere modificato in:
/article/vote/HMAC(IP,NEWSID)/NEWSID
Ogni visitatore che accede ad IB avra’ dunque delle URL di voto
leggermente diverse da tutti gli altri, in relazione all’indirizzo
IP che possiede. All’atto del voto ovviamente il server verifica
che l’HMAC sia valido. L’HMAC puo’ essere implementato con una qualunque
funzione ad una via, come MD5 o SHA1, e si noti che in questo caso le
vulnerabilita’ dovute ai recenti risultati di crittoanalisi contro MD5
non ne alterano la validita’.
Riferimenti
La descrizione di questa classe di vulnerabilita’ e’ apparsa
inzialmente alcuni mesi fa su reddit.com grazie ad un utente
che ha inventato l’attacco.
La soluzione proposta in questo commento e’ stata inventata dallo staff
di oknotizie, ma e’ possibile che i siti che attualmente si proteggono
da questo problema adottino soluzioni simili.
Via OkNotizie












































No Comments su “Descrizione di un baco.”