Estoy desarrollando una aplicación móvil para iOS y Android que, debido a las especificaciones proporcionadas por la administración, presenta algunas fallas de seguridad. Sin embargo, no puedo explicar en términos concretos por qué las especificaciones no son seguras y, por lo tanto, no puedo convencerlas de que cambien sus requisitos.
Algunos antecedentes; cuando implementamos el registro de usuarios, hay dos opciones para hacerlo: completar un número de teléfono móvil (y activar una verificación de SMS) o conectarse con Facebook. El backend es un RESTful API.
El primer defecto es que cuando nos conectamos con Facebook, todavía quieren que el usuario cree un nombre de usuario y una contraseña en la aplicación. Lo único para lo que quieren usar el inicio de sesión de Facebook es completar automáticamente algunos de los datos en el formulario de registro, como el nombre de usuario. Esto significa que el inicio de sesión de Facebook es esencialmente inútil ya que el backend nunca ve un token de inicio de sesión de Facebook exitoso. Todavía se reduce a datos enviados de forma.
El segundo defecto es que cuando nos registramos usando nuestro número de teléfono móvil, quieren que la contraseña se complete después de el paso de verificación de SMS. Así que el flujo es:
- registrarse con un número de teléfono móvil,
- obtener una verificación por SMS
- proporcione la contraseña. Esto significa que la persona que registró su el número de teléfono móvil no está garantizado para ser el que también está suministrando la contraseña.
Por supuesto, el inicio de sesión del usuario es lo que usted esperaría: complete el nombre de usuario / número de teléfono móvil y la contraseña. Siempre, incluso cuando se registraron a través de Facebook.
Mi pregunta es, ¿cuáles son algunos de los ataques que un pirata informático podría hacer para aprovechar una configuración de registro como esta? Tengo la intención de utilizar esta información para hacer un caso más concreto de por qué debería cambiar el flujo de registro.