https://d226lax1qjow5r.cloudfront.net/blog/blogposts/mitigate-2fa-sms-fraud-using-vonage-apis/fraud-mitigation.jpg

Mitiga el fraude 2FA SMS utilizando las API de Vonage

Publicado el January 17, 2022

Tiempo de lectura: 8 minutos

La tecnología de las comunicaciones está en constante evolución, y el ritmo de cambio ha sido rápido en los últimos años. Esta evolución ha aportado muchos beneficios a las empresas que aprovechan estas tecnologías, proporcionando una mejor interacción con los clientes y una automatización inteligente. Por desgracia, también hay malos actores que buscan explotar los cambios en las tendencias tecnológicas por motivos nefastos. Un ejemplo de ello es el aumento del fraude 2FA por SMS.

La autenticación de dos factores (2FA) por SMS existe desde hace tiempo, y en los últimos años ha experimentado un enorme aumento de popularidad. Hoy en día, la mayoría de las Applications ofrecen 2FA, a menudo implementado mediante el uso de un canal de comunicación SMS. Debido a esta popularidad, los sistemas 2FA se han convertido en una especie de reclamo para los estafadores, que intentan aprovecharse de estos sistemas de diversas formas, como enrutando tráfico no legítimo a través de ellos.

Escenario de fraude: Fraude con SMS 2FA de tarificación adicional

Una motivación común para este tipo de actividad fraudulenta es dirigir los mensajes a través de números de tarificación adicional o números virtuales creados por los estafadores como números premium no oficiales. Para entender cómo se perpetra este fraude, veamos primero un flujo de trabajo típico de alto nivel para implementar la 2FA por SMS.

  1. Un cliente se registra o crea una Account para una aplicación

  2. Como parte del proceso de registro/creación de la cuenta, el cliente especifica un número de móvil que se utilizará con fines 2FA

  3. En los siguientes inicios de sesión, como parte de la verificación 2FA, se envía un SMS al número con un código que el cliente puede introducir a través de la interfaz de usuario de la aplicación.

Este tipo de flujo de trabajo básico puede ser vulnerable al fraude basado en tráfico no legítimo, como el enrutamiento de ese tráfico a números de tarificación adicional. Para perpetrar el fraude, en el paso 2, se puede introducir un número de tarificación adicional. A continuación, los estafadores intentarán simular varios inicios de sesión para esta cuenta o cuentas posteriores, posiblemente utilizando bots. En cada "inicio de sesión", como parte del sistema 2FA en el paso 3, se enviaría un SMS al número de tarificación adicional, incurriendo así en un coste adicional por cada mensaje muy superior al coste de un mensaje estándar. Los estafadores suelen utilizar bots para registrarse en varias cuentas y activar varios mensajes SMS 2FA en cada una de ellas. Por lo tanto, el coste monetario de un fraude de este tipo podría convertirse rápidamente en bastante significativo.

Mitigación del fraude: qué puede hacer usted

Hay varias formas de mitigar este tipo de fraude.

Limitación de velocidad

Un enfoque podría consistir en limitar el número de mensajes SMS de verificación enviados en un periodo de tiempo determinado en función de diversos factores. Por ejemplo, limitar el número de mensajes enviados al mismo número o a la misma dirección IP o identificador de dispositivo.

Si bien la limitación de la tasa puede reducir el impacto de un fraude de este tipo, puede que no lo anule por completo. Igualmente importante es realizar una comprobación higiénica de los Numbers proporcionados para la configuración 2FA, ayudando a prevenir el origen del fraude en sí. Esto puede lograrse mediante una sólida validación de las entradas.

Validación de las entradas

Si nos fijamos en el flujo de trabajo de alto nivel anterior, en el paso 3 es donde se produce el impacto del fraude, pero el potencial de este impacto se crea antes, en el paso 2, cuando el número de tarifa superior se configura como el número que se utilizará para 2FA. Si se realiza una validación de la entrada en este punto del flujo de trabajo de registro, es posible evitar que un número de tarifa especial se envíe al paso 3. Veamos un flujo de trabajo actualizado que incorpora validación de entrada:

  1. Un cliente se registra o crea una Account para una aplicación

  2. Como parte del proceso de registro/creación de la cuenta, el cliente especifica un número de móvil que se utilizará con fines 2FA

  • El número especificado se coteja con determinados parámetros preestablecidos. Si el número se considera aceptable según estos parámetros, se añade, de lo contrario se rechaza.

  1. En los siguientes inicios de sesión, como parte de la verificación 2FA, se envía un SMS al número con un código que el cliente puede introducir a través de la interfaz de usuario de la aplicación.

Los parámetros exactos utilizados para identificar números potencialmente fraudulentos variarán en función de la base de clientes de la aplicación. Un método habitual consiste en utilizar los prefijos de los países o de los números para identificar de qué país procede un número concreto.

Este tipo de información numérica puede utilizarse de varias maneras:

  • Permitir sólo Numbers de determinados países. Este enfoque es útil si, por ejemplo, sabe que todos sus clientes procederán de un país específico que tiene un alto nivel de regulación de los números de tarificación adicional y, por tanto, una probabilidad mucho menor de que se produzcan fraudes de este tipo.

  • Evitar Numbers de países específicos en los que no opere o tenga una audiencia de clientes. Además, algunos países tienen una reputación de alto riesgo de fraude, ya sea debido a fraudes conocidos con números de tarificación adicional o a la prevalencia de sobornos monetarios en el fraude de números (con escasa o nula regulación de los números de tarificación adicional).

Como nota al margen, dado que esta entrada fraudulenta a menudo la realizan bots, la implementación de un CAPTCHA puede evitar parte de la actividad fraudulenta.

Mitigación del fraude: cómo podemos ayudarle

Utiliza Number Insight API de Vonage

Una forma de obtener información sobre la identidad de los números es a través de la API Number Insight de Vonage. Para ello, podemos enviar una solicitud al punto final de API correspondiente. Existen diferentes puntos finales para Basic, Standard y Advanced Insights, y cada uno proporciona un nivel diferente de información sobre el número. Encontrará una descripción general de las diferencias en este documento. También existe una especificación API que cubre todos los puntos finales.

Number Insight API también se puede usar a través de los SDK de Vonage. A continuación se muestra un ejemplo de uso del SDK de Node.js para obtener información sobre un número a través del punto final de Advanced Insights.

vonage.numberInsight.get({level: 'advancedSync', number: '447700900000'}, (error, result) => {
  if(error) {
    console.error(error);
  }
  else {
    console.log(result);
  }
});

Una respuesta típica de una solicitud a la API sería algo parecido a esto:

{
      "status": 0,
      "status_message": "Success",
      "lookup_outcome": 0,
      "lookup_outcome_message": "Success",
      "request_id": "55a7ed8e-ba3f-4730-8b5e-c2e787cbb2b2",
      "international_format_number": "447700900000",
      "national_format_number": "07700 900000",
      "country_code": "GB",
      "country_code_iso3": "GBR",
      "country_name": "United Kingdom",
      "country_prefix": "44",
      "request_price": "0.03000000",
      "remaining_balance": "1.97",
      "current_carrier": {
        "network_code": "23410",
        "name": "Telefonica UK Limited",
        "country": "GB",
        "network_type": "mobile"
      },
      "original_carrier": {
        "network_code": "23410",
        "name": "Telefonica UK Limited",
        "country": "GB",
        "network_type": "mobile"
      },
      "valid_number": "valid",
      "reachable": "reachable",
      "ported": null,
      "roaming": "unknown"
    }

Esta respuesta contiene datos sobre el número, tales como country_code, country_code_iso3y country_prefixque pueden utilizarse para identificar el país de origen. Además de los datos sobre el país, otros puntos de datos pueden indicar a veces números potencialmente fraudulentos. A network_type de undefined, o uno que aluda a un número virtual, puede ser a veces un indicador. Otro dato útil es la propiedad reachable si tiene el valor unknowno algo distinto de "reachable"podría indicar un número potencialmente fraudulento.

Un flujo de trabajo actualizado que incorpore Number Insight API podría tener este aspecto:

  1. Un cliente se registra o crea una Account para una aplicación

  2. Como parte del proceso de registro/creación de la cuenta, el cliente especifica un número de móvil que se utilizará con fines 2FA

  • Realice una solicitud HTTP a Number Insight API para obtener información sobre este número.

  • Utiliza los datos de la respuesta para cotejar el número con determinados parámetros preestablecidos. Si el número se considera aceptable según estos parámetros, se añade; en caso contrario, se rechaza.

  1. En los siguientes inicios de sesión, como parte de la verificación 2FA, se envía un SMS al número con un código que el cliente puede introducir a través de la interfaz de usuario de la aplicación.

Aunque el uso de Number Insight API para ayudar a identificar números potencialmente fraudulentos puede tener algunos beneficios inmediatos en términos de mitigación del fraude, este enfoque es, por desgracia, algo limitado en términos de impacto global. La información proporcionada por Number Insights depende en gran medida de cada proveedor. También hay que tomar decisiones difíciles sobre qué datos utilizar; bloquear países enteros, por ejemplo, puede no ser una opción por razones comerciales, incluso si los números originados en esos países conllevan un mayor riesgo de actividad fraudulenta.

Otro paso, que puede proporcionar una mitigación más general y a más largo plazo, es contribuir con datos de enrutamiento sólidos a través de la Conversion API de Vonage.

Usa la Conversion API de Vonage

El sitio Conversion API te permite informar a Vonage sobre la confiabilidad y calidad de tu comunicación 2FA.

La conversión, en el contexto de 2FA, es una medida de si el código de autenticación enviado al cliente fue realmente utilizado o no. Si se ha utilizado, se considera una conversión.

Dado que el objetivo de los estafadores es que se envíe el SMS en lugar de usar realmente el código, las bajas tasas de conversión de tu 2FA pueden ser un fuerte indicador de intercepción fraudulenta en tu enlace de comunicación y ayudar a identificar las rutas atacadas. Al usar la Conversion API, tus datos de tasa de conversión pueden introducirse en el algoritmo Adaptive Routing™ de Vonage, que desvía el tráfico de la ruta afectada por el fraude a otra ruta no afectada. El algoritmo Adaptive Routing™ determina automáticamente las mejores rutas del operador para entregar SMS y llamadas de voz en cualquier momento específico.

Dentro del flujo de trabajo de alto nivel, la Conversion API entraría en juego en el paso 3. Una vez que el cliente introduce el código de verificación en la aplicación, los detalles de esta acción pueden recibirse a través de un webhook asociado a la acción. Una visión más detallada de un típico flujo de trabajo 2FA está disponible en este documento. Para los propósitos de nuestro flujo de trabajo de alto nivel, una versión actualizada podría ser algo como esto:

  1. Un cliente se registra o crea una Account para una aplicación

  2. Como parte del proceso de registro/creación de la cuenta, el cliente especifica un número de móvil que se utilizará con fines 2FA

  • Realice una solicitud HTTP a Number Insight API para obtener información sobre este número.

  • Utiliza los datos de la respuesta para cotejar el número con determinados parámetros preestablecidos. Si el número se considera aceptable según estos parámetros, se añade; en caso contrario, se rechaza.

  1. En los siguientes inicios de sesión, como parte de la verificación 2FA, se envía un SMS al número con un código que el cliente puede introducir a través de la interfaz de usuario de la aplicación.

  • Una vez recibida la confirmación de que el cliente ha introducido correctamente el código de verificación a través del webhook asociado, envíe una solicitud HTTP que contenga el identificador de mensaje correspondiente a la Conversion API.

Póngase en contacto con su gestor de cuentas o con el departamento de ventas cuando esté listo para implantar la Conversion API.

Compartir:

https://a.storyblok.com/f/270183/373x376/e8d3211236/karl-lingiah.png
Karl LingiahDefensor del desarrollador Ruby

Karl es un defensor de los desarrolladores para Vonage, centrado en el mantenimiento de nuestros SDK de servidor Ruby y la mejora de la experiencia de los desarrolladores para nuestra comunidad. Le encanta aprender, hacer cosas, compartir conocimientos y, en general, todo lo relacionado con la tecnología web.