El modelo de autenticación basado en usuario y contraseña sigue siendo el más extendido hoy en día para autenticar al usuario que desea operar con un servicio. No obstante, no es el único sistema para autenticar usuarios. Actualmente, existen tres tipos de sistemas de autenticación de usuario:
1 Sistemas basados en algo conocido por el usuario, como las contraseñas, o las archiconocidas preguntas de seguridad.
2 Sistemas basados en algo que tiene el usuario, como un token USB o tarjeta de coordenadas.
3 Sistemas basados en algo que el usuario es, como la huella digital del usuario, su voz, etc.
Los sistemas basados en usuario y contraseña presentan, debido a su diseño, una serie de vulnerabilidades que pueden ser aprovechadas por cualquier atacante para vulnerar la seguridad de una red o aplicación, entre otras:
- Almacenamiento de estas en condiciones no seguras (post-it, archivos Excel, notas, etc)
- Reutilización de la misma contraseña en distintos servicios.
- Falta de robustez, ya que es difícil recordar una contraseña de 10 caracteres con mayúsculas, minúsculas, números y símbolos alfanuméricos.
- Vulnerabilidades de los sistemas que guardan las contraseñas de los usuarios para autenticarles.
Por ello, es crucial para cualquier organización tener implantada una buena política para la gestión de contraseñas y asegurarse que su personal mantiene una buena higiene diaria en el uso de estas.
El uso de un segundo factor de autenticación incrementa notablemente la seguridad. No obstante, ello no quiere decir que no sigamos siendo vulnerables a ataques de agentes externos, ya que esta tecnología se puede vulnerar.
¿Qué es el segundo factor de autenticación?
El segundo factor de autenticación viene a reforzar la autenticación mediante usuario y contraseña, comprobando por cualquiera de las dos vías que nos quedan, que el usuario es quien dice ser. Así una vez que el usuario introduce su clave correctamente, debe resolver el desafío del segundo factor de autenticación, por ejemplo, aportando una posición en su tarjeta de coordenadas, un código de un solo uso, su voz, su huella dactilar, o un reconocimiento facial.
Uso de SMS para recibir nuestra clave
Dentro de los segundos factores de autenticación, quizá uno de los que siguen siendo más utilizados es el envío de códigos de un solo uso por SMS al dispositivo móvil del usuario para autenticarle. Esto presenta varias ventajas, ya que se aprovecha algo que el usuario tiene (su teléfono) en combinación con algo que el usuario sabe, su contraseña. Además, el usuario medio se encuentra familiarizado con la tecnología SMS y no requiere de la instalación de ningún software específico.
La mala noticia es que la red GSM utiliza el protocolo SS7 para permitir la comunicación entre dispositivos, lo que incluye el envío de SMS. Este protocolo que no se diseñó pensando en la seguridad no es seguro. Desde 2007 se conoce el aprovechamiento de este para la localización de usuarios. Posteriormente, también se ha conocido la explotación de las vulnerabilidades de este protocolo para saltarse los sistemas de segundo factor de autenticación, al interceptar el SMS con el código de un solo uso para robar dinero de cuentas bancarias. Por ejemplo, en este vídeo podemos ver una prueba de concepto en la que un investigador consigue hacerse pasar por otro usuario en Telegram:
Uso de aplicaciones
Otra alternativa al uso de SMS para recibir un código de un solo uso es la utilización de aplicaciones hechas para este propósito, como Authy, Google Authenticator, FreeOTP, etc. Para ello, tan solo es necesario instalarlas en cualquier smartphone y comenzar a utilizarlas.
Estas aplicaciones se encargarán de generar los códigos únicos para el login con segundo factor de autenticación de forma dinámica, eliminando de esta forma el riesgo de que nuestro código sea capturado al ser enviado por SMS.
Uso de dispositivos UF2
En lugar de trabajar con una aplicación, hay quienes prefieren hacerlo con algo más tangible. Los dispositivos UF2 son dispositivos físicos, como una memoria USB, o una tarjeta de coordenadas que el usuario posee y que le sirven para autenticarse mediante un segundo factor. En esta categoría encontramos dispositivos como Yubikey, que no están exentos de polémica, después de que se descubrieran algunos errores de seguridad en su hardware.
Vulnerando 2FA
Independientemente del método utilizado para autenticarnos con un segundo factor de autenticación, seguimos siendo vulnerables. Cuando se inicia sesión en un sitio web, mandamos al servidor responsable de servir la página y de atender nuestra petición de inicio de sesión nuestro usuario y contraseña. El servidor coteja la información que le damos con la que ya tiene y, si todo es correcto, nos otorga acceso.
Al otorgar este acceso, el servidor instala en el navegador web del usuario una cookie de sesión de usuario autenticado. Esta cookie es un “recordatorio” para el servidor, que trata al navegador que la tenga instalada como autenticado. ¿Qué pasaría entonces si un atacante consigue nuestra cookie de sesión y la inserta en otro navegador? ¿Cómo podría un atacante conseguir este objetivo?
El ataque podría comenzar como un ataque phishing en el que la víctima recibe un enlace malicioso. Este enlace nos va a llevar a la página de inicio de sesión que el atacante estime oportuno a través de un proxy. Es decir, la víctima verá por su navegador el sitio web original al que quiera acceder, no una copia. Lo que sucede en este caso es que el tráfico se redirige a través de la máquina del atacante (man-in-the-middle). Cuando la víctima se autentique ante el servicio, el atacante podrá interceptar las credenciales junto con la cookie de sesión, lo que le otorga acceso inmediato a la cuenta de la víctima.
No obstante, conviene resaltar que este ataque fallaría en caso de que el servicio web controle la multi-sesión, no permitiendo que el usuario se conecte a través de más de un dispositivo simultáneamente, puesto que el intento de login con la cookie robada, provocaría que se destruyese la sesión.
Conclusiones
Las formas de vulnerar el segundo factor de autenticación expuestas no significan que este no sea un método seguro o recomendable para aumentar la seguridad de nuestros dispositivos. Al contrario, sigue siendo muy recomendable implementar esta medida de seguridad en todos los procesos de autenticación posibles.
Conocer las vulnerabilidades y vías de ataque nos hará más conscientes de las limitaciones de las medidas de seguridad que adoptemos, ya que el usuario siempre va a ser el eslabón más débil de la cadena.
Como hemos visto, es muy recomendable dejar de usar el SMS como vía para recibir nuestro código de un solo uso en favor de aplicaciones o dispositivos UF2. Por supuesto, también es crucial que el personal se encuentre debidamente formado para que sepa identificar las amenazas y evitar males mayores.
Víctor Méndez Sánchez
Áudea Seguridad de la Información