#MundoHacker: La verificación en 2 pasos es segura pero no es la panacea

verificacion dos pasos

Llevo años defendiendo la implantación de sistemas de verificación en dos pasos como único método viable para minimizar la exposición de una identidad a un ataque masivo.

Da igual lo compleja que sea nuestra contraseña, da igual lo sofisticado que sea el sistema biométrico que utiliza nuestro smartphone, da igual las veces que cambiemos los factores de seguridad. Lo cierto es que en un mundo accesible a golpe de click y gestionado por interfaces humanas, hay errores, brechas de seguridad y mala uva suficiente como para que de la noche a la mañana nos hayan comprometido nuestras cuentas.

Y lo más probable, salvando casos muy puntuales (targets que por su interés estratégico, pueden ser objetivos de la industria del crimen), esto se realizará de manera automática, sin apenas haber aplicado criterios y sesgos específicos, y afectando por tanto a miles y miles de cuentas de completos desconocidos.

Es algo que he intentado por activa y por pasiva dejar claro en cada una de mis intervenciones presenciales, en radio, en vídeo y en prensa. Contra todo esto, el doble factor de autenticación es la única medida de seguridad que de verdad funciona.

Ahora, hay que decir también que no es la panacea. Y si bien funciona perfectamente para evitar esas dichosas listas multitudinarias de cuentas expuestas por el hackeo/fallo de turno en X servicio, de todas esas otras que caerán por haber utilizado el mismo usuario y contraseña en otro servicio, puede resultar ineficiente frente a ataques pseudo-dirigidos.

De nuevo, una tipología de ataque que afortunadamente no suele afectar masivamente a la ciudadanía, pero que cada vez tiene mayor presencia gracias a la feroz evolución que están experimentando los sistemas de “hacking para tontos (HaaS para los que saben de lo que hablo) que están dando de comer a la industria del crimen.

Sistemas híbridos que ofuscan la parte compleja de los ataques bajo una interfaz usable que un cliente “alquila” para realizar sus maldades, de tal manera que eso que antes solo estaba disponible para un equipo especializado en un target específico se acaba por democratizar al grueso de potenciales víctimas.

Por ello, quería dedicarle un artículo de la serie #MundoHacker, donde tratamos en varios tutoriales las medidas para atacar y/o defenderse en el mundo digital, a los límites del segundo factor de autenticación, con las medidas para minimizar sus debilidades.

Los límites del segundo factor de autenticación

Como bien sabe, estos sistemas suelen basarse en dos capas de identidad. Para que un usuario pueda demostrar que en efecto es el usuario legítimo, debe pasar un primer control, que generalmente se realiza mediante una prueba de conocimiento (como es el saber una contraseña) o una prueba identidad innata (como puede ser demostrar que eres quien dices ser por tu huella dactilar), y más tarde una prueba de posesión (soy quien digo ser porque tengo algo que solo este usuario podría tener, como puede ser un smartphone).

Para esta segunda prueba, se suele recurrir al envío de un SMS con un código que caduca a los pocos minutos, de manera que si el usuario que intenta loguearse es quien dice ser, tendrá a mano el dispositivo y podrá resolverla. Y en caso contrario, al no contar con el mismo, le será imposible (e incluso alertará al usuario legítimo del intento).

Esto soluciona, como decíamos, la mayoría de ataques masivos, ya que puede resultar relativamente sencillo robar mediante una fuga de información los datos de conocimiento (par usuario-contraseña) de millones de usuarios, pero ya no es tan sencillo hacer lo propio con elementos físicos y/o biológicos.

Existe, no obstante, un límite, que viene dado por la capacidad que tendría un tercero de interceder en alguna de esas comunicaciones, bien sea mediante un MITM entre el servidor y la operadora (lo más fácilmente escalable, y lo más difícil de conseguir) o la operadora y el cliente (lo más difícilmente escalable, y lo menos difícil de obtener), o bien tergiversando el funcionamiento de alguno de los sistemas que operan por debajo del doble factor de autenticación.

Justo lo que le pasaba recientemente al activista DeRay McKesson (@deray).

La debilidad de la cadena de suministro de SMSs

Prácticamente al mismo tiempo que la cuenta de Twitter de Zuckerberg quedaba expuesta por unas medias de seguridad demasiado laxas (viniendo de alguien como Zuck sinceramente no sé si creérmelo), el caso de McKesson sí me parece más interesante.

Al parecer, su cuenta también fue hackeada pese a que éste, además de contar con una contraseña compleja (para el caso daba igual que fuera compleja o un simple 1234), tenía activada la autenticación en dos pasos.

¿Cómo hicieron los cibercriminales para entrar entonces?

Obtuvieron su número de teléfono, y mediante ingeniería social con la operadora, el resto de datos que necesitaron para duplicar su tarjeta SIM (EN).

Una vez con la tarjeta SIM, pidieron el acceso a la cuenta y como el SMS se envía a la SIM (que no al móvil), ¡voilà!

¿Es problema del segundo factor de autenticación? Estrictamente no. Lo es de la cadena de suministro que tiene por debajo. En este caso, de la debilidad del sistema de SMS, que podría llegar a industrializarse tan pronto la industria del crimen contara con satélites dentro de las tiendas locales de operadoras (un simple trabajador al que recurrir con los datos de la SIM a duplicar que no hiciera demasiadas preguntas).

Y el problema puede repetirse en otros escenarios, como el de la propia sincronización de iCloud o Google que permite que un servicio digital gestione el envío y recepción de SMS en todos los dispositivos sincronizados.

Bastaría con que se comprometiera uno de ellos (o que se incluyera en la cuenta uno comprometido) para exponer la seguridad de todos los demás, al tener acceso inmediato a los SMS.

¿Qué se puede hacer para remediarlo?

Algunos servicios apuestan por ofrecer el doble factor de autenticación no por SMS sino por el sistema de autenticación de Google Authenticator (EN).

La principal ventaja es que no está asociado al sistema SMS, y por tanto, únicamente llegará a aquel dispositivo que previamente ha sido elegido para recibir el código. Código, por otra parte, que se genera automáticamente cada X tiempo, y que no depende tampoco de la cobertura (ni del acceso a internet, ni tan siquiera del acceso a red, cosa que sí necesitamos para recibir un SMS).

De esta manera, para realizar un ataque exitoso es necesario acceder física o remotamente a un dispositivo en cuestión. Algo que afortunadamente resulta mucho más difícil que duplicar una SIM.

Google Promp (EN) es otra propuesta que utiliza las APIs de Android y iOS para hacer uso de las alertas del propio sistema operativo de cara a ofrecer ese segundo factor. Una capa más de complejidad (hablamos de que aunque el dispositivo esté comprometido, difícilmente contará con los permisos necesarios para acceder a estas alertas), aunque entiendo que aquí sí dependemos de la cobertura para que funcione.

Por último, recientemente el US National Institute ofr Standards and Technology está estudiando considerar el envío de SMS una tecnología obsoleta (EN), lo cual repercutiría sensiblemente en el uso del mismo como segundo factor de autenticación.

Algo que tarde o temprano acabará ocurriendo, habida cuenta de los riesgos que suponen ya no solo para este tipo de ataques, sino en definitiva para la industria del fraude y el phishing.

Así que por mi parte recomendarle usar siempre que sea posible el doble factor de autenticación, y además, hacerlo mediante apps que utilicen el estándar One-Time Password Algorithm (EN) como ocurre con la ya mencionada Google Authenticator, por ser éste ejemplo de buenas prácticas en eso de enviar un código temporal a un dispositivo de la manera más segura y confiable posible.

 

________

Si le gustaría ver más de estos tutoriales y análisis por aquí. Si el contenido que realizo le sirve en su día a día, piense si merece la pena invitarme a lo que vale un café, aunque sea digitalmente.

hazme patrono pabloyglesias