2 puntos por GN⁺ 2024-07-12 | 1 comentarios | Compartir por WhatsApp
  • A través de la exposición de IdentifyMobile, el CCC pudo ver en tiempo real SMS con contraseñas de un solo uso, en un caso en el que se filtraron más de 198 millones de SMS de más de 200 empresas
  • El 2FA por SMS es un mecanismo auxiliar que ayuda cuando solo se robó la contraseña, pero la seguridad real también depende en gran medida del nivel de gestión del proveedor de envío de SMS
  • IdentifyMobile expuso en internet códigos de autenticación, números telefónicos de destinatarios, nombres de remitentes y algunos datos de cuentas, y se podía acceder simplemente adivinando el subdominio idmdatastore
  • Google, Amazon, Facebook, Microsoft, Telegram, Airbnb, FedEx y DHL, entre otras, estuvieron dentro del alcance; solo con el feed en tiempo real era posible secuestrar números de WhatsApp o intentar transacciones financieras e inicios de sesión en servicios
  • La autenticación de dos factores por SMS es mejor que usar solo contraseña, pero son más seguros los métodos que dependen menos de las redes móviles y de los operadores de SMS, como las contraseñas de un solo uso basadas en apps o los tokens de hardware

Las debilidades del 2FA por SMS que reveló la exposición de IdentifyMobile

  • El 2FA por SMS exige tanto la contraseña que conoce el usuario como un código SMS que demuestra acceso al número telefónico
    • Se usa como una capa adicional para impedir el secuestro de cuentas cuando solo se filtró la contraseña
    • El SMS puede incluir códigos válidos por poco tiempo, como códigos de verificación de WhatsApp o TAN para transferencias bancarias
  • La autenticación basada en SMS ya está expuesta a varias vías de ataque
  • En este caso, el proveedor de envío de SMS pudo convertirse en un punto débil de la cadena de autenticación sin que el atacante tuviera que apuntar directamente a la red de telecomunicaciones ni al usuario
    • IdentifyMobile es un proveedor que envía grandes volúmenes de SMS para varias empresas y servicios
    • Este proveedor tenía acceso al contenido de los SMS, que incluía códigos de autenticación
    • El CCC pudo acceder a datos en tiempo real con solo adivinar el subdominio idmdatastore

Alcance de la exposición y riesgos reales

  • Los datos expuestos incluían no solo el contenido de los SMS, sino también números telefónicos de destinatarios, nombres de remitentes y, en algunos casos, otros datos de cuentas
  • Las empresas afectadas fueron más de 200, incluidas aquellas que confiaron su seguridad de autenticación a IdentifyMobile de forma directa o a través de otros proveedores de servicios
    • Google, Amazon, Facebook, Microsoft
    • Telegram, Airbnb, FedEx, DHL
    • En total se filtraron más de 198 millones de SMS
  • Solo con el feed en tiempo real eran posibles varios escenarios de abuso
    • Secuestro de números de WhatsApp
    • Si se conocía la contraseña, realizar transacciones financieras sin acceso al teléfono
    • Si se conocía la contraseña, iniciar sesión en varios servicios
  • En general, para un abuso real todavía se necesitaba la contraseña, pero los datos también incluían enlaces de 1-click login
    • En algunas grandes empresas afectadas, el alcance protegido por IdentifyMobile se limitaba a servicios específicos
    • La negligencia de IdentifyMobile expuso a empresas y clientes a un riesgo considerable
    • El CCC no almacenó los datos, pero no se puede descartar que otras personas hayan accedido

Métodos de autenticación que se pueden elegir en lugar de SMS

  • Cuando esté disponible, es más seguro usar contraseñas de un solo uso generadas en una app o tokens de hardware en lugar de SMS
    • Estos métodos no dependen de la red móvil
    • Tampoco dependen de proveedores de envío de SMS como IdentifyMobile
    • Aun así, la autenticación de dos factores es mejor que usar solo una contraseña

1 comentarios

 
GN⁺ 2024-07-12
Opiniones en Hacker News
  • Hace poco, un conocido cayó en un phishing de Google Ads: el atacante compró anuncios para búsquedas como “BANKNAME login”, clonó con mucho detalle la página de inicio de sesión del banco y, por detrás, estaba haciendo un ataque de retransmisión.
    Cuando ingresó el código de autenticación de dos pasos de la app del teléfono, la pantalla lo rechazó y pidió un código nuevo, pero en realidad el segundo código era un código de aprobación para agregar un nuevo destinatario de “pay anyone”, y con eso le sacaron el dinero.
    Siempre pensé que la autenticación de dos pasos por SMS era débil a nivel de protocolo, pero en este caso quizá el método por SMS del banco, que envía un mensaje distinto al agregar un nuevo destinatario que al iniciar sesión, habría sido mejor.
    Lo ideal sería no usar una simple app generadora de tokens, sino generar tokens por tipo de transacción, como un token para iniciar sesión y otro para agregar destinatarios, y hacer que no puedan reemplazarse entre sí. Me da curiosidad si alguien ha visto un banco que ofrezca autenticación de dos pasos de este nivel.
    Tal vez las passkeys vuelvan irrelevante este problema, porque establecen una conexión física con hardware local. Por cierto, la víctima al final recuperó el dinero.

    • Los anuncios no solo son una forma molesta de terrorismo psicológico que consume ancho de banda y recursos de cómputo; también son el principal canal para distribuir estafas y malware en la web.
      Si quieres mejorar tu postura de seguridad, instalar un bloqueador de anuncios es una de las mejores medidas. Recomiendo mucho configurar uBlock Origin a amigos o familiares que no son muy técnicos.
    • HSBC sí tiene algo así. En la app de cada país se pueden generar códigos de seguridad distintos para iniciar sesión en el sitio web, confirmar transacciones (por ejemplo, enviar dinero a un destinatario) y reautenticarse (por ejemplo, cambiar información personal como el número de teléfono).
      La pantalla de la app de Australia puede verse aquí, y las apps de EE. UU. y Reino Unido son parecidas: https://www.hsbc.com.au/content/dam/hsbc/au/images/ways-to-b...
      HSBC ofrece esto desde hace años, y no entiendo bien por qué todavía no es un estándar o por qué otros bancos de EE. UU. no lo han adoptado.
    • Por curiosidad compré una vez anuncios en Google; solo lo intenté porque me dieron crédito gratis, pero aun así tuve que sortear una cantidad absurda de condiciones y lineamientos antes de que aprobaran el anuncio.
      Entonces no entiendo por qué son tan estrictos con los anuncios normales, pero venden anuncios a páginas de phishing que se hacen pasar por un banco y apuntan a quienes buscan ese banco.
    • Vale la pena contarles a familiares y conocidos que incluso el FBI recomienda usar una extensión de bloqueo de anuncios en los motores de búsqueda precisamente para evitar estas estafas [0].
      “Usa una extensión de bloqueo de anuncios cuando hagas búsquedas en Internet. La mayoría de los navegadores de Internet permiten agregar extensiones, incluidas extensiones de bloqueo de anuncios. Estos bloqueadores de anuncios pueden activarse y desactivarse dentro del navegador, lo que permite mostrar anuncios en ciertos sitios web y bloquearlos en otros.”
      [0] https://www.ic3.gov/Media/Y2022/PSA221221
    • Otra lección de esto es que hay que guardar en favoritos o memorizar la URL del banco, y no confiar en que un motor de búsqueda te llevará al banco.
  • Desde hace mucho sospecho que las empresas que obligan a usar autenticación de dos pasos por SMS no se toman en serio la seguridad; simplemente quieren tu número de teléfono y usan la autenticación de dos pasos como teatro de seguridad para obtenerlo.

    • Sin duda también hay algo de eso. El número de teléfono se ha convertido en una especie de nuevo número de identificación nacional: un identificador único que casi nunca cambia y que conecta al usuario entre muchos servicios.
      Además, es un identificador que uno entrega directamente a cada persona que conoce, así que se puede decir que parece un mal sistema.
    • Si un servicio tiene cuentas gratuitas, pedir el número de teléfono ayuda a la prevención de fraude o a evitar el abuso con múltiples cuentas.
      Hace más difícil crear cuentas nuevas para evadir bloqueos, y facilita vincular comportamientos indebidos que aparecen en varias cuentas.
    • La mayoría de las empresas en realidad quieren el número de teléfono para prevenir spam.
      Creo que se subestima cuánto han contribuido los spammers al deterioro de Internet.
    • La razón para imponer autenticación de dos pasos por SMS es que asumir que el usuario tiene un número de teléfono genera mucha menos fricción que asumir que instaló una app de autenticación de dos pasos y sabe administrar esa herramienta.
      También es más fácil de dar soporte.
    • O puede ser que antes hicieran la autenticación de dos pasos por correo electrónico y luego un auditor dijera “eso no es autenticación de dos pasos”, y entonces se dieron cuenta de que el middleware de notificaciones soportaba SMS además de correo.
  • NIST lleva bastante tiempo diciendo explícitamente que no se use autenticación de dos pasos por SMS.
    NIST SP 800-63B §5.1.3.3
    https://pages.nist.gov/800-63-3/sp800-63b.html#pstnOOB

    • La perspectiva y los intereses de NIST no necesariamente coinciden con lo que un proveedor de servicios debe cuidar en la experiencia de sus clientes y usuarios.
      Cliente: “¿A qué se refieren con una app de autenticación de dos pasos? ¿No se suponía que el código llegaba a mi teléfono?”
      Soporte: “Así es, pero ahora ya no damos soporte a la autenticación de dos pasos por SMS.”
      Cliente: “Pero no tenía problemas cuando el código me llegaba al teléfono.”
      Soporte: “Sí, pero NIST recomienda no usar autenticación de dos pasos por SMS.”
      Cliente: “¿Qué es NIST? Esto es muy frustrante. Necesito entrar a mi cuenta.”
  • Lamentablemente, casi todos los bancos te obligan a usar SMS. Es porque las apps bancarias se niegan a ejecutarse en teléfonos rooteados. Qué gran logro de seguridad.

    • Aun así, al menos hay una alternativa.
      En mi país, casi todos los bancos obligan a usar autenticación de dos pasos basada en app, sin alternativa por SMS.
      Si no quieres comprar y cargar un teléfono aparte, no te queda más que usar el único banco que no lo exige.
    • Eso sí es una ganancia de seguridad.
      En un teléfono rooteado, se abre la posibilidad de que otras apps espíen y roben información bancaria.
      Parece bastante razonable que una app bancaria no se ejecute en un teléfono cuya seguridad está comprometida.
    • Es discutible, pero los teléfonos rooteados son inherentemente menos seguros.
      Sin embargo, GrapheneOS no entra en esta categoría, porque las builds oficiales de GrapheneOS no tienen permisos de root.
  • El texto mezcla dos problemas con implicaciones de seguridad distintas
    Los enlaces de 1-click login son preocupantes, y servicios como WhatsApp pueden ser secuestrados con solo acceder a los SMS
    Pero los códigos de autenticación en dos pasos son relativamente menos preocupantes. Como son un segundo factor, el atacante también necesita la contraseña
    En un caso así, vería con mucha menos alarma el uso de SMS y el riesgo de interceptación

    • Por cada filtración de una base de datos de mensajes SMS, se filtran unas 1000 bases de datos de credenciales de cuentas
  • En el Reino Unido, parece que casi todas las transacciones de banca en línea ahora se verifican por SMS. Da la impresión de que lo exige la ley, y reemplazó al sistema anterior de verificación con tarjeta bancaria + lector de tarjetas + PIN
    El método anterior no solo era más seguro, sino que tampoco dependía de tener un teléfono en funcionamiento con señal
    Espero que algún día se reconozca que esto fue un error terrible y se corrija, pero no tengo muchas expectativas

    • Me da curiosidad saber qué banco es. Uso Lloyds y las transacciones se verifican con la app, no por SMS
    • La primera oración no es cierta en absoluto. SMS es una de las opciones, pero muchos bancos admiten autenticación en dos pasos basada en app
      Estoy de acuerdo en que el lector de tarjetas era útil sin conexión. Pero casi nunca me acordaba de llevar ese dispositivo, así que a menudo me quedaba bloqueado durante los viajes
  • Suecia resolvió este problema hace mucho con BankID
    https://en.wikipedia.org/wiki/BankID
    Es sorprendente lo que se puede lograr con un poco de cooperación entre instituciones públicas y privadas. Es la única forma de iniciar sesión y hacer autenticación en dos pasos en servicios gubernamentales y en la mayoría de los bancos, y funciona bien
    Cuesta creer que no todos los países tengan un sistema así; más aún, que no exista uno así para toda la UE

    • La UE está introduciendo Digital Wallet para esto. Espero que sea más fácil de usar que la versión finlandesa de BankID, y mejor aún si depende menos de bancos u otras entidades privadas rentistas
      Aun así, no me hago demasiadas ilusiones
      https://ec.europa.eu/digital-building-blocks/sites/display/E...
    • Me pregunto si, como dice la wiki, realmente no soporta Linux. Supongo que se podría usar la versión en forma de tarjeta
  • Parece que los mensajes del bucket de S3 se actualizaban cada 5 minutos: https://www.zeit.de/digital/datenschutz/2024-07/it-sicherhei...
    Sin embargo, CCC se equivocó al definir esto como un problema exclusivo de 2FA por SMS. Lo afectado no fue solo Twilio Verify (API de autenticación en dos pasos), sino todos los SMS enviados a través de este proveedor

    • Me pregunto de dónde sale la evidencia sobre Twilio Verify. No se menciona en ninguna parte
  • Esto parece más un problema de seguridad del proveedor, por no proteger correctamente un repositorio de datos sensibles, que un problema de SMS en sí

    • También es un problema de SMS en el sentido de que OTP y los tokens de hardware no necesitan escribir secretos rotativos en un repositorio de datos que potencialmente puede leerse públicamente
      Esa ruta de ataque específica ni siquiera existe con esas tecnologías
  • Varias instituciones financieras donde trabajo exigen autenticación en dos pasos por SMS y no ofrecen opciones HOTP/TOTP. Es una locura