
Compartilhar:
Karl é um Developer Advocate da Vonage, com foco na manutenção de nossos SDKs de servidor em Ruby e na melhoria da experiência dos desenvolvedores da nossa comunidade. Ele adora aprender, criar coisas, compartilhar conhecimento e tudo o que esteja relacionado à tecnologia da web em geral.
Reduzir fraudes relacionadas à autenticação de duas etapas (2FA) por SMS usando as APIs da Vonage
Tempo de leitura: 8 minutos
A tecnologia das comunicações está em constante evolução, e o ritmo das mudanças tem sido acelerado nos últimos anos. Essa evolução trouxe muitos benefícios para as empresas que aproveitam essas tecnologias, proporcionando uma melhor interação com os clientes e automação inteligente. Infelizmente, também existem pessoas mal-intencionadas que buscam explorar as mudanças nas tendências tecnológicas para fins ilícitos. Um exemplo disso é o aumento das fraudes envolvendo a autenticação de dois fatores (2FA) por SMS.
A autenticação de dois fatores (2FA) via SMS já existe há algum tempo e, nos últimos anos, tem registrado um enorme aumento em sua popularidade. Atualmente, a maioria das aplicações oferece a 2FA, frequentemente implementada por meio do canal de comunicação SMS. Devido a essa popularidade, os sistemas de 2FA se tornaram um alvo atraente para fraudadores que buscam explorá-los de várias maneiras, como o encaminhamento de tráfego não legítimo por meio deles.
Cenário de fraude: Fraude por SMS de autenticação de duas etapas (2FA) com tarifas premium
Uma motivação comum para esse tipo de atividade fraudulenta é redirecionar mensagens para números com tarifa premium ou números virtuais criados por fraudadores como números premium não oficiais. Para entender como essa fraude é cometida, vamos primeiro examinar um fluxo de trabalho típico, em linhas gerais, para a implementação da autenticação de dois fatores (2FA) via SMS.
Um cliente se cadastra ou cria um Account em um aplicativo
Como parte do processo de cadastro/criação de Account, o cliente indica um número de celular a ser utilizado para fins de autenticação de duas etapas (2FA)
Nos acessos subsequentes, como parte da verificação por autenticação de duas etapas (2FA), é enviada uma mensagem SMS para o número com um código que o cliente pode inserir pela interface do aplicativo
Esse tipo de fluxo de trabalho básico pode ser vulnerável a fraudes baseadas em tráfego não legítimo, como o redirecionamento desse tráfego para números com tarifa premium. Para cometer a fraude, na Etapa 2, pode-se inserir um número com tarifa premium. Os fraudadores procurariam então simular vários logins para essa conta ou para contas subsequentes, possivelmente utilizando bots. A cada “login”, como parte do sistema de autenticação de duas etapas (2FA) na Etapa 3, uma mensagem SMS seria enviada para o número de tarifa premium, gerando assim um custo adicional por cada mensagem muito superior ao custo de uma mensagem padrão. Os fraudadores costumam usar bots para se cadastrar em várias contas e acionar várias mensagens SMS de 2FA em cada uma delas. O custo financeiro dessa fraude pode, portanto, tornar-se rapidamente bastante significativo.
Como se proteger contra fraudes — O que você pode fazer
Existem várias maneiras de mitigar esse tipo de fraude.
Limitação de taxa
Uma abordagem poderia ser limitar o número de mensagens SMS de verificação enviadas em um determinado período, com base em vários fatores. Por exemplo, limitar o número de mensagens enviadas para o mesmo número, o mesmo endereço IP ou o mesmo ID de dispositivo.
Embora a limitação de taxa possa diminuir o impacto desse tipo de fraude, ela pode não eliminá-lo totalmente. É igualmente importante realizar uma verificação de integridade dos números fornecidos para a configuração da autenticação de duas etapas (2FA), o que ajuda a prevenir a própria origem da fraude. Isso pode ser feito por meio de uma validação robusta dos dados inseridos.
Validação de entradas
Analisando o fluxo de trabalho geral apresentado anteriormente, a Etapa 3 é onde ocorre o impacto da fraude, mas o potencial para esse impacto é criado antes, na Etapa 2, quando o número de tarifa premium é configurado como o número a ser usado para a autenticação de dois fatores (2FA). Ao realizar alguma validação de entrada neste ponto do fluxo de trabalho de cadastro, é possível impedir que um número de tarifa premium seja encaminhado para a Etapa 3. Vejamos um fluxo de trabalho atualizado que incorpora a validação de entrada:
Um cliente se cadastra ou cria um Account em um aplicativo
Como parte do processo de cadastro/criação de Account, o cliente indica um número de celular a ser utilizado para fins de autenticação de duas etapas (2FA)
O número especificado é verificado em relação a determinados parâmetros predefinidos. Se o número for considerado aceitável de acordo com esses parâmetros, ele é adicionado; caso contrário, é rejeitado.
Nos acessos subsequentes, como parte da verificação por autenticação de duas etapas (2FA), é enviada uma mensagem SMS para o número com um código que o cliente pode inserir pela interface do aplicativo
Os parâmetros exatos utilizados para identificar números potencialmente fraudulentos variam de acordo com a base de clientes do aplicativo. Uma abordagem comum consiste em utilizar códigos de país ou prefixos de números para identificar de qual país um número específico se origina.
Esse tipo de informação numérica pode ser utilizado de várias maneiras:
Permita apenas números de determinados países. Essa abordagem é útil se, por exemplo, você souber que todos os seus clientes são originários de um país específico que possui um alto nível de regulamentação para números com tarifa premium e, portanto, uma probabilidade muito menor de ocorrência desse tipo de fraude.
Impedir que números de países específicos nos quais você não opera ou não possui um público-alvo. Além disso, alguns países têm reputação de alto risco de fraude, seja devido a fraudes conhecidas envolvendo números com tarifa premium, seja por serem locais onde o suborno financeiro relacionado a fraudes com números é predominante (com pouca ou nenhuma regulamentação sobre números com tarifa premium).
A título de observação, como essas entradas fraudulentas costumam ser feitas por bots, a implementação de um CAPTCHA pode impedir parte dessas atividades fraudulentas.
Prevenção contra fraudes – Como podemos ajudar
Use the Number Insight API da Vonage
Uma maneira de obter informações sobre a identidade de um número é por meio da Number Insight API. Para isso, podemos enviar uma solicitação ao endpoint apropriado da API. Existem diferentes endpoints para os níveis Basic, Standard e Advanced Insights, sendo que cada um fornece um nível diferente de informações sobre o número. Uma visão geral das diferenças está disponível neste este documento. Há também uma especificação da API que abrange todos os endpoints.
A Number Insight API também pode ser utilizada por meio dos SDKs da Vonage. Abaixo, segue um exemplo de como usar o SDK do Node.js para obter informações sobre um número por meio do endpoint Advanced Insights.
vonage.numberInsight.get({level: 'advancedSync', number: '447700900000'}, (error, result) => {
if(error) {
console.error(error);
}
else {
console.log(result);
}
});
Uma resposta típica a uma solicitação à API seria mais ou menos assim:
{
"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 resposta contém dados sobre o número, tais como country_code, country_code_iso3, e country_prefix, que podem ser usados para identificar o país de origem. Além dos dados sobre o país, outros dados podem, às vezes, indicar números potencialmente fraudulentos. Um network_type de undefined, ou um que sugira um número virtual, pode, às vezes, ser um indicador. Outro dado útil é a reachable ; se ela tiver o valor unknownou algo diferente de "reachable", isso poderia indicar um número potencialmente fraudulento.
Um fluxo de trabalho atualizado que incorpore a Number Insight API poderia ser mais ou menos assim:
Um cliente se cadastra ou cria um Account em um aplicativo
Como parte do processo de cadastro/criação de Account, o cliente indica um número de celular a ser utilizado para fins de autenticação de duas etapas (2FA)
Faça uma solicitação HTTP à Number Insight API para obter informações sobre esse número
Use os dados da resposta para comparar o número com determinados parâmetros pré-definidos. Se o número for considerado aceitável de acordo com esses parâmetros, ele é adicionado; caso contrário, é rejeitado.
Nos acessos subsequentes, como parte da verificação por autenticação de duas etapas (2FA), é enviada uma mensagem SMS para o número com um código que o cliente pode inserir pela interface do aplicativo
Embora o uso da Number Insight API para ajudar a identificar números potencialmente fraudulentos possa trazer alguns benefícios imediatos em termos de mitigação de fraudes, essa abordagem é, infelizmente, um tanto limitada em termos de impacto geral. As informações fornecidas pela Number Insight dependem fortemente de cada operadora. Há também decisões delicadas a serem tomadas quanto aos dados a serem utilizados; bloquear países inteiros, por exemplo, pode não ser uma opção por motivos comerciais, mesmo que os números originários desses países apresentem um risco maior de atividades fraudulentas.
Outra medida, que pode proporcionar uma mitigação de longo prazo e mais abrangente, é contribuir com dados de roteamento confiáveis por meio da Conversion API da Vonage.
Use a Conversion API da Vonage
A Conversion API permite que você informe à Vonage sobre a confiabilidade e a qualidade da sua comunicação de autenticação de duas etapas (2FA).
A conversão, no contexto da autenticação de duas etapas (2FA), é uma medida que indica se o código de autenticação enviado ao cliente foi realmente utilizado ou não. Se tiver sido utilizado, isso é considerado uma conversão.
Como o objetivo dos fraudadores é que a mensagem SMS seja enviada, e não que o código seja realmente utilizado, baixas taxas de conversão da sua autenticação de duas etapas (2FA) podem ser um forte indicador de interceptação fraudulenta no seu canal de comunicação e ajudar a identificar rotas atacadas. Ao utilizar a Conversion API, seus dados de taxa de conversão podem ser inseridos no algoritmo Adaptive Routing™ da Vonage, que desvia o tráfego da rota afetada pela fraude para outra rota não afetada. O algoritmo Adaptive Routing™ determina automaticamente as melhores rotas de operadoras para entregar SMS e chamadas de voz em qualquer momento específico.
No fluxo de trabalho de alto nível, a Conversion API entraria em ação na Etapa 3. Assim que o cliente inserir o código de verificação no aplicativo, os detalhes dessa ação poderão ser recebidos por meio de um webhook associado à ação. Uma visão geral mais detalhada de um fluxo de trabalho típico de autenticação de duas etapas (2FA) está disponível em este documento. Para os fins do nosso fluxo de trabalho de alto nível, uma versão atualizada poderia ser algo como isto:
Um cliente se cadastra ou cria um Account em um aplicativo
Como parte do processo de cadastro/criação de Account, o cliente indica um número de celular a ser utilizado para fins de autenticação de duas etapas (2FA)
Faça uma solicitação HTTP à Number Insight API para obter informações sobre esse número
Use os dados da resposta para comparar o número com determinados parâmetros pré-definidos. Se o número for considerado aceitável de acordo com esses parâmetros, ele é adicionado; caso contrário, é rejeitado.
Nos acessos subsequentes, como parte da verificação por autenticação de duas etapas (2FA), é enviada uma mensagem SMS para o número com um código que o cliente pode inserir pela interface do aplicativo
Assim que for recebida, por meio do webhook associado, a confirmação de que o cliente inseriu corretamente o código de verificação, envie uma solicitação HTTP contendo o message-id correspondente para a Conversion API.
Entre em contato com seu gerente de contas ou com o departamento de vendas quando estiver pronto para implementar a Conversion API.
Compartilhar:
Karl é um Developer Advocate da Vonage, com foco na manutenção de nossos SDKs de servidor em Ruby e na melhoria da experiência dos desenvolvedores da nossa comunidade. Ele adora aprender, criar coisas, compartilhar conhecimento e tudo o que esteja relacionado à tecnologia da web em geral.