Il bug di instagram che permette di ottenere like e follower 3





instagramInstagram da più di un anno fornisce delle API che permettono a noi sviluppatori di realizzare  applicazioni web e mobile che  si integrano con le funzionalità del social network fotografico.

Uno degli utilizzi maggiori delle api è stato quello di realizzare  un web browser visto che inizialmente instagram non lo forniva (da qualche mese invece disponibile su instagram.com).

Questo ha permesso la realizzazione di progetti interessanti come  followgram, statigram, gramfeed e non ultimo il mio pingram (un mashup tra pinterest e instagram)

Per utilizzare le api ed avere accesso ai dati dell’utente, in modo da mostrare lo stream di foto,  effettuare like, commentare, fare follower, dobbiamo chiedere all’utente di autenticarsi.

Questo è un metodo molto semplice e sicuro, grazie al protocollo OAuth 2.0 che adotta anche instagram.

Questo protocollo permette alle web app di far autorizzare gli utenti direttamente sul sito di instagram (in modo che il sito non avrà mai le credenziali dell’utente)

Successivamente dopo aver autenticato l’utente, instagram fornirà alla web app un codice (access token) con cui potrà effettuare tutte le operazioni (che l’app ha richiesto) per conto dell’utente (like, commenti, follow, accesso a foto stream, ecc..)

Questo processo ha anche il vantaggio che l’utente può in qualsiasi momento revocare il token, dal pannello di controllo di instagram, invalidandone l’utilizzo.

L’access token quindi è fondamentale, perché permette di impersonificare l’utente.

Ovvero,  un sito malevolo che ha 1000 token, può con una sola operazione dare ad ogni utente 999 follower.

Ovviamente questo è un utilizzo illegale ed all’insaputa dell’utente (o quasi..).

Ci sono siti malevoli che sfruttano questo trucchetto e sono noti da tempo,  ma da qualche settimana c’è un nuovo sito, gramhood.com che sfrutta un bug di instagram per ottenere i token dell’utente rilasciati ad altri siti.

Gli utenti che si registrano a gramhoot, possono cliccare su un pulsante ed effettueranno l’autenticazione con un sito esterno (es. gramfeed, pingram, followgram ecc. ).

Poi dovranno incollare l’url in un apposito box, in modo che gramhoot estrae il token e lo conserva per i suoi scopi.

Gramhood potrà utilizzare il token ILLEGALMENTE ed il responsabile sarà il sito vittima, perché instagram non effettua un controllo sulla provenienza del token (imbarazzante)

L’ulteriore beffa e che è possibile ottenere il token rilasciato al sito vittima, anche se quest’ultimo effettuava un autenticazione, più sicura, lato server!

Infatti, generalmente con un’autenticazione lato server, il token non viene mai esposto.

Il processo è questo :

L’utente clicca sul pulsante login sul sito

=> viene reinderizzato su instagram per l’autenticazione

=> instagram effettua redirect al sito fornendo un codice (non token)

=> Il sito contatta instagram con il codice e le sue credenziali ed ottiene il token

Quindi il sito effettuerà una chiamata di questo tipo :

 https://instagram.com/oauth/authorize/ ?client_id=XXXX&redirect_uri=http://www.SITO.COM/&response_type=token&scope=XXX

Gramhoot , furbescamente, ha copiato il codice e sostituito response_type con il valore code (permette autenticazione lato client)

ottenenendo

 https://instagram.com/oauth/authorize/ ?client_id=XXXX&redirect_uri=http://www.SITO.COM/&response_type=code&scope=XXX

in questo modo l’utente cliccandoci atterra sul sito vittima (SITO.COM) con un’url che espone il token

http://SITO.COM/#access_token=<Valore token>

L’utente (come richesto dal gramhoot) effettua copia ed incolla dell’url e lo fornisce ad gramhoot.

Qui potete vedere il video in azione :

Come vedete, gramhoot ha scelto questo nome, perché il primo sito ad essere attaccato è stato gramfeed.
In questo modo l’utonto poteva anche pensare che fosse dello stesso autore.

Finchè Instagram non corregge il bug di autenticazione, l’unica soluzione è eliminare il frammento hash dalla pagina di autenticazione del sito.

Con un codice tipo questo :

document.addEventListener( "DOMContentLoaded", function(){
if(window.location.hash){
window.location.hash = "";
}
}, false);

Questo finche Instagram non rende il suo sistema di autenticazione più sicuro :

1. Controllando la provenienza dell’url nel processo di autenticazione (basterebbe semplicemente controllare se il Referrer sia lo stesso assegnato all’host che lo richiede!)  (una riga di codice..)

2. Invalidare il token se è utilizzato da un sito differente da quello con cui si è fatto l’autenticazione (gramhoot non dovrebbe utilizzare un token dato per gramfeed o pingram!) (un’altra riga di codice..)

Seguimi su twitter : @ironico

3 thoughts on “Il bug di instagram che permette di ottenere like e follower

  1. Reply Elva lug 16,2013 6:03 pm

    I’m truly enjoying the design and layout of your site. It’s a very easy on the eyes which makes it much more enjoyable for me
    to come here and visit more often. Did you hire out a designer to create your theme?
    Fantastic work!

  2. Reply Claudio lug 7,2013 9:55 am

    Io non vedo nulla su questo dominio http://cl.ly/Q6WT

Leave a Reply

  

  

  

Current ye@r *

Login with:
Powered by Sociable!

Per essere informato sui miei contenuti - Email: