Sto sviluppando un'app mobile per iOS e Android che, a causa delle specifiche fornite dalla direzione, presenta alcuni difetti di sicurezza. Tuttavia, non posso spiegare in termini concreti perché le specifiche non sono sicure, e quindi non posso convincerle a cambiare i loro requisiti.
Alcuni background; quando implementiamo la registrazione dell'utente, ci sono due opzioni per farlo: inserire un numero di cellulare (e attivare una verifica tramite SMS) o connettersi con Facebook. Il back-end è un RESTful API.
Il primo difetto è che quando ci connettiamo con Facebook, vogliono comunque che l'utente crei un nome utente e una password nell'app. L'unica cosa che vogliono usare il login di Facebook è di compilare automaticamente alcuni dei dati nel modulo di registrazione, come il nome utente. Ciò significa che l'accesso a Facebook è essenzialmente inutile poiché il back-end non vede mai un token di accesso di Facebook di successo. Si riduce comunque ai dati inviati dal modulo.
Il secondo difetto è che quando registriamo usando il nostro numero di cellulare, vogliono che la password sia compilata dopo nel passaggio di verifica SMS. Quindi il flusso è:
- registrati con un numero di cellulare,
- ricevi una verifica SMS
- fornire la password. Questo significa la persona che ha registrato il suo il numero di cellulare non è garantito per essere anche quello che è fornendo la password.
Naturalmente, il login utente è quello che ti aspetteresti: inserisci il nome utente / numero di cellulare e password. Sempre, anche quando si sono registrati tramite Facebook.
La mia domanda è: quali sono gli attacchi che un hacker potrebbe fare per trarre vantaggio da una configurazione di registrazione come questa? Intendo utilizzare queste informazioni per rendere più concreto il motivo per cui il flusso di registrazione dovrebbe cambiare.