OnePlus è famosa principalmente per due motivi: la qualità unita alle prestazioni e il suo sistema esclusivo di inviti. Vi è mai capitato di prenotarvi in coda e di vedervi continuamente superare da altri? Al ragazzo protagonista di questa news sì, e la cosa non gli è affatto piaciuta, anzi: ha reso pan per focaccia sfruttando una vulnerabilità del sistema.
Jake Cooper è un ragazzo di Victoria, Canada, con numerose esperienze lavorative in ambito informatico, nonostante la giovane età (anche in colossi come IBM). Amante della tecnologia e di Android, si era prenotato in lista per ottenere il nuovo OnePlus Two, per evitare di spendere 20$ su XDA acquistando l’invito da terzi, come aveva invece fatto per One. Ma il giovane programmatore si è ritrovato ad essere da #9000 a #70000, ha subito deciso di farsi giustizia.
Il sistema di queueing della casa produttrice cinese non si basa infatti sulla precedenza, bensì sullo spamming: più persone convinci ad acquistare il prodotto, più velocemente scali la graduatoria. E Jake, poco incline alla condivisione spam, ha deciso di arrangiarsi, facendo da sé e facendolo meglio.
You wanna dance OnePlus? Let’s dance.
Come ha fatto?
Prima di tutto si è resa necessaria una verifica manuale di presenza di qualche falla. Il coding viene sempre dopo, e generalmente lo si utilizza per automatizzare procedure.
Inizialmente il ragazzo, dopo essersi recato nella pagina degli inviti, ha iniziato ad inviare gli shared link a indirizzi email disponibili, grazie al servizio di Mailnator. Dopo 10 mail è arrivato a raggiungere quota #50000: molto meglio, ma ancora distante dai #9000 di partenza.
E qui arriva il bello: una volta aperto il debugger di Google Chrome, è stato possibile recuperare la request URL.
Nella seconda immagine, la stringa “test” è stata sostituita da “{{name}}”, altra stringa che ad ogni iterazione viene sostituita dall’indirizzo random di posta elettronica generato da uno script Python.
Una volta stabilito come inviare un numero potenzialmente illimitato di mail, vi è il problema di dover recuperare il corpo del messaggio: per fortuna Mailinator mette a disposizione dei propri clienti le sue API, che inizialmente richiedono l’importazione di tutta la mailbox, come da script in immagine.
Per accedere all’email voluta è obbligatorio usare l’ID, mentre per visualizzare il body basta effettuare una request della mail. Il tutto si traduce in neanche una decina di righe di codice, grazie alla potenza di Python e delle sue librerie offerte dalla community, oltre che alle API di Mailinator.
Un po’ di ricerca e utilizzo di Regular Expressions et voilà: ecco estratta anche l’URL di conferma, necessaria a validare l’invito.
Ad oggi, il giovane programmatore ha notificato la vulnerabilità su Twitter, ma deve ancora ricevere una risposta da OnePlus. Inoltre, circa quattro ore dopo il primo attacco, ha individuato un’altro modo di sfruttare la falla nel sistema di inviti. Ha però dichiarato di non voler fornire il proprio source code a nessuno (quelli resi pubblici sono solo piccoli snippet) se non all’azienda pronta al rilascio di Two.
Il profilo dell’audace White Hat hacker su Twitter è @RealJakeCooper, e se siete curiosi a riguardo dei suoi progetti e delle sue app Android potete dare un’occhiata al suo web site personale.