Dynamic+, sviluppatore di una famosa applicazione che permetteva di inviare SMS gratuiti con mittente personalizzato, ha scoperto una grava falla di sicurezza all’interno dell’applicazione SKY Guida TV, che permette di addebitare acquisti sulle Smart Card di altre persone, senza la minima autorizzazione da parte dell’ignaro utente! [appscreens 327185962]
Ecco quanto affermato da Dynamic+:
Quello che mi ha stupito è che, una volta installata la App, nelle impostazioni, chiedeva il numero della smart card e nessun user/password che invece sono necessari per controllare l’abbonamento tramite il sito Web.
Con questo numero, composto soltanto da 9 cifre significative e che probabilmente, escludendo una cifra di controllo, risulta anche incrementale, si possono acquistare eventi e sport, ma anche pianificare le registrazioni, utilizzando la Smart Card di altre persone, che si ritroverebbero un bell’addebito ingiustificato nella bolletta.
A questo punto, utilizzando l’applicazione, si potrebbe, “a mano”, provare le varie combinazioni di smart-card per arrivare ad un utente esistente, ma sarebbe un “lavoraccio” lungo e noioso. Ho quindi deciso di andare a fondo per verificare come funzionasse la cosa e.. sorpresa delle sorprese: l’algoritmo di comunicazione è veramente banale, tant’è che si potrebbe realizzare un software in pochi minuti, che si controlla centinaia di migliaia di smart-card ed addebita loro uno o più eventi casuali.
Il problema è che l’utente ignaro non potrà mai dimostrare di non aver acquistato un determinato evento PPV, proprio perchè non c’è una vera autenticazione, ritrovandosi così costretto a pagare nella prossima bolletta decine o centinaia di euro addebitati per scherzo. La cosa ancor più fastidiosa è che probabilmente se ne accorgerebbe solo in bolletta, chissà quanti giorni dopo.
Analizzando i pacchetti scambiati tra l’applicazione ed il server REST, ho avuto conferma che il traffico dati è in chiaro, senza crittografia SSL.
Vi illustro parte del protocollo, omettendo la chiave privata per generare la firma per prevenire abusi al servizio.
Per acquistare un evento l’applicazione chiama la seguente URL:
/tvguide/servlets/ppv sull’hostname iphone.ilvillage.it con verbo di chiamata POST,
ma la beffa è che si può richiamare (semplicemente da browser) anche con modalità GET.
Per finezza si usa un user-agent consono, che nel caso dell’iPhone, per la versione sopra citata è:
SkyTvGuide/1.2.1 CFNetwork/485.10.2 Darwin/10.3.1
Questi invece sono i parametri (in ordine) veri e propri del server REST:
- sc è il numero della smart card con tutte le cifre, anche non significative
- pid è l’ID dell’evento che possiamo tranquillamente trovare qua http://guidatv.sky.it/guidatv/primafila.html per ogni evento accanto a “Codice: ” oppure direttamente nell’applicazione iPhone
- ed in formato GGMMAA è la data di fine giorno dell’evento: corrisponde solitamente al giorno stesso
- pd è la data di richiesta registrazione in formato GGMMAAOOMMSS
- phone è il numero MSISDN se utilizzate una SIM per accedere al servizio (ovvero via UMTS), altrimenti è vuoto via WI-FI
- tid è un hash del telefono di 32 caratteri esadecimali maiuscoli, ma si puo’ personalizzare a piacere e funziona da UDID
- code è in pratica la firma per convalidare la chiamata e si calcola in modo semplicissimo in quanto è il risultato dell’algoritmo MD5 (maiuscolizzato) applicato alla concatenazione dei valori dei parametri citati sopra e di una chiave privata appesa alla fine. Per ulteriori informazioni sull’MD5 si può dare un’occhiata su Wikipedia: http://it.wikipedia.org/wiki/MD5 mentre per generare un hash di prova si può utilizzare questo servizio http://md5-hash-online.waraxe.us/
Non vi svelo ovviamente la chiave privata, ma vi garantisco che ricavarla è semplicissimo, quanto semplice è la chiave stessa!
Ovviamente per attivare la registrazione sul MySky, il procedimento è analogo. La chiave privata rimane la stessa: cambia solo la url del server REST e un paio di parametri, in quanto al posto dell’evento avremo il canale e l’orario preciso di inizio/fine.
Ricordiamo a tutti gli utenti che questo testo è stato redatto unicamente a scopi educativi. L’uso improprio di questo protocollo (anche per fare uno scherzo agli amici) presuppone un reato!
Aggiornamento “esclusivo” ;) : Dopo aver personalmente contattato lo sviluppatore dell’applicazione, è stato immediatamente bloccata la possibilità di effettuare acquisti tramite l’applicazione ed il sito web collegato. Da questo momento in poi, nessuno potrà più utilizzare l’exploit descritto. L’emergenza è quindi rientrata, e probabilmente adesso non ci resta che attendere un aggiornamento dell’applicazione con l’integrazione di un nuovo metodo di login più sicuro.
Leggi o Aggiungi Commenti