
Partager:
Karl est un défenseur des développeurs pour Vonage, qui se concentre sur la maintenance de nos SDK de serveur Ruby et sur l'amélioration de l'expérience des développeurs pour notre communauté. Il aime apprendre, fabriquer des objets, partager ses connaissances et tout ce qui a trait à la technologie du web.
Atténuer la fraude par SMS 2FA à l'aide des API de Vonage
Temps de lecture : 8 minutes
Les technologies de communication sont en constante évolution et le rythme des changements a été rapide ces dernières années. Cette évolution a apporté de nombreux avantages aux entreprises qui tirent parti de ces technologies, en améliorant l'interaction avec les clients et l'automatisation intelligente. Malheureusement, il existe aussi des acteurs malveillants qui cherchent à exploiter les changements dans les tendances technologiques pour des raisons néfastes. L'augmentation des fraudes par SMS 2FA en est un exemple.
L'authentification à deux facteurs (2FA) par SMS existe depuis un certain temps, mais sa popularité a considérablement augmenté ces dernières années. Aujourd'hui, la plupart des Applications proposent l'authentification à deux facteurs, souvent mise en œuvre par le biais d'un canal de communication SMS. En raison de cette popularité, les systèmes 2FA sont devenus une sorte d'attraction pour les fraudeurs qui cherchent à exploiter ces systèmes de diverses manières, par exemple en y acheminant du trafic non légitime.
Scénario de fraude : Fraude à la prime par SMS 2FA
Une motivation courante pour ce type d'activité frauduleuse est d'acheminer les messages vers des numéros surtaxés ou des numéros virtuels créés par des fraudeurs en tant que numéros surtaxés non officiels. Afin de comprendre comment cette fraude est perpétrée, examinons d'abord un flux de travail de haut niveau typique pour la mise en œuvre du 2FA par SMS.
Un client s'inscrit ou crée un Account pour une application
Dans le cadre du processus d'inscription/de création de compte, le client spécifie un numéro de mobile à utiliser à des fins de 2FA
Lors des connexions suivantes, dans le cadre de la vérification 2FA, un SMS est envoyé au numéro avec un code que le client peut ensuite saisir via l'interface utilisateur de l'application.
Ce type de flux de travail de base peut être vulnérable à la fraude basée sur un trafic non légitime, comme l'acheminement de ce trafic vers des numéros à tarif majoré. Pour perpétrer la fraude, à l'étape 2, un numéro à tarif majoré peut être saisi. Les fraudeurs cherchent ensuite à simuler plusieurs connexions pour ce compte ou d'autres comptes, éventuellement à l'aide de robots. À chaque "connexion", dans le cadre du système 2FA à l'étape 3, un SMS est envoyé au numéro surtaxé, ce qui entraîne un coût supplémentaire pour chaque message, bien supérieur au coût d'un message standard. Les fraudeurs utilisent généralement des bots pour s'inscrire à plusieurs comptes et déclencher plusieurs SMS 2FA pour chaque compte. Le coût monétaire d'une telle fraude pourrait donc rapidement devenir très important.
Atténuer la fraude - Ce que vous pouvez faire
Il existe plusieurs moyens d'atténuer ce type de fraude.
Limitation du taux
Une approche pourrait consister à limiter le nombre de SMS de vérification envoyés au cours d'une période donnée en fonction de divers facteurs. Par exemple, limiter le nombre de messages envoyés au même numéro, à la même adresse IP ou au même numéro d'identification de l'appareil.
Si la limitation du taux peut atténuer l'impact d'une telle fraude, elle ne peut pas l'annuler complètement. Il est tout aussi important d'effectuer un contrôle d'hygiène sur les Numbers fournis pour la mise en place du 2FA, afin de prévenir la source de la fraude elle-même. Cela peut être réalisé par une validation robuste des entrées.
Validation des entrées
Si l'on examine le flux de travail de haut niveau présenté plus haut, c'est à l'étape 3 que se produit l'impact de la fraude, mais cet impact est potentiellement créé plus tôt, à l'étape 2, lorsque le numéro à tarif majoré est configuré comme le numéro à utiliser pour le 2FA. En procédant à une validation des données à ce stade du processus d'inscription, il est possible d'éviter qu'un numéro à tarif préférentiel ne soit acheminé vers l'étape 3. Examinons un flux de travail mis à jour qui intègre la validation des entrées :
Un client s'inscrit ou crée un Account pour une application
Dans le cadre du processus d'inscription/de création de compte, le client spécifie un numéro de mobile à utiliser à des fins de 2FA
Le nombre spécifié est vérifié par rapport à certains paramètres prédéfinis. Si le nombre est jugé acceptable selon ces paramètres, il est ajouté, sinon il est rejeté.
Lors des connexions suivantes, dans le cadre de la vérification 2FA, un SMS est envoyé au numéro avec un code que le client peut ensuite saisir via l'interface utilisateur de l'application.
Les paramètres exacts utilisés pour identifier les numéros potentiellement frauduleux varient en fonction de la clientèle de l'application. Une approche courante consiste à utiliser les codes d'appel du pays ou le préfixe du numéro afin d'identifier le pays d'origine d'un numéro spécifique.
Ce type d'information sur les numéros peut être utilisé de plusieurs manières :
N'autoriser que les numéros provenant de certains pays. Cette approche est utile si, par exemple, vous savez que tous vos clients sont originaires d'un pays spécifique où la réglementation des numéros à tarif majoré est très stricte et où le risque de fraude de ce type est donc beaucoup plus faible.
Empêcher les numéros provenant de pays spécifiques dans lesquels vous n'exercez pas d'activité ou n'avez pas de clientèle. En outre, certains pays ont une réputation de risque de fraude élevé, soit en raison d'une fraude connue sur les numéros à tarif majoré, soit parce que les pots-de-vin sur les numéros frauduleux sont monnaie courante (les numéros à tarif majoré étant peu ou pas réglementés).
Soit dit en passant, étant donné que cette saisie frauduleuse est souvent effectuée par des robots, la mise en place d'un CAPTCHA peut empêcher une partie de l'activité frauduleuse.
Atténuer la fraude - Comment nous pouvons vous aider
Utiliser l'API de Number Insight API de Vonage
L'API Number Insight API de Vonage permet d'obtenir des informations sur l'identité des numéros. Pour ce faire, nous pouvons envoyer une requête au point de terminaison approprié de l'API. Il existe différents points de terminaison pour Basic, Standard et Advanced Insights, chacun fournissant un niveau d'information différent sur le numéro. Une vue d'ensemble des différences est disponible dans ce document. Il existe également une spécification API couvrant tous les points d'extrémité.
L'API Number Insight peut également être utilisée via les SDK de Vonage. Vous trouverez ci-dessous un exemple d'utilisation du SDK Node.js pour obtenir des informations sur un numéro via le point de terminaison Advanced Insights.
vonage.numberInsight.get({level: 'advancedSync', number: '447700900000'}, (error, result) => {
if(error) {
console.error(error);
}
else {
console.log(result);
}
});
Une réponse typique d'une requête à l'API ressemblerait à ceci :
{
"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"
}Cette réponse contient des points de données sur le numéro, tels que country_code, country_code_iso3et country_prefixqui peuvent être utilisés pour identifier le pays d'origine. Outre les données relatives au pays, d'autres points de données peuvent parfois indiquer des numéros potentiellement frauduleux. A network_type de undefinedou qui fait allusion à un numéro virtuel, peut parfois être un indicateur. Un autre point de données utile est la propriété reachable Un autre point de données utile est la propriété unknownou autre que "reachable"cela peut indiquer un numéro potentiellement frauduleux.
Un flux de travail actualisé intégrant Number Insight API pourrait ressembler à ceci :
Un client s'inscrit ou crée un Account pour une application
Dans le cadre du processus d'inscription/de création de compte, le client spécifie un numéro de mobile à utiliser à des fins de 2FA
Effectuer une requête HTTP auprès de l'API Number Insight pour obtenir des informations sur ce numéro.
Utiliser les données de la réponse pour vérifier le numéro par rapport à certains paramètres prédéfinis. Si le nombre est jugé acceptable selon ces paramètres, il est ajouté, sinon il est rejeté.
Lors des connexions suivantes, dans le cadre de la vérification 2FA, un SMS est envoyé au numéro avec un code que le client peut ensuite saisir via l'interface utilisateur de l'application.
Bien que l'utilisation de l'API Number Insight pour aider à identifier les numéros potentiellement frauduleux puisse présenter certains avantages immédiats en termes de réduction de la fraude, cette approche est malheureusement quelque peu limitée en termes d'impact global. Les informations fournies par Number Insights dépendent fortement des fournisseurs individuels. Il faut également prendre des décisions délicates concernant les points de données à utiliser ; le blocage de pays entiers, par exemple, peut ne pas être une option pour des raisons commerciales, même si les numéros provenant de ces pays présentent un risque plus élevé d'activité frauduleuse.
Une autre étape, qui peut fournir une atténuation à plus long terme et plus globale, consiste à contribuer à des données de routage robustes via l'API de conversion de Vonage.
Utiliser l'API de conversion de Vonage
L'API Conversion API vous permet d'informer Vonage de la fiabilité et de la qualité de votre communication 2FA.
La conversion, dans le contexte du 2FA, est une mesure qui permet de savoir si le code d'authentification envoyé au client a été effectivement utilisé ou non. S'il a été utilisé, on considère qu'il s'agit d'une conversion.
Étant donné que l'objectif des fraudeurs est que le SMS soit envoyé plutôt que d'utiliser réellement le code, de faibles taux de conversion de votre 2FA peuvent être un indicateur fort d'interception frauduleuse dans votre lien de communication et aider à identifier les itinéraires attaqués. Lorsque vous utilisez la Conversion API, vos données de taux de conversion peuvent être introduites dans l'algorithme Adaptive Routing™ de Vonage, qui détourne le trafic de la route impactée par la fraude vers une autre route non affectée. L'algorithme Adaptive Routing™ détermine automatiquement les meilleurs itinéraires de transporteur pour acheminer les SMS et les appels vocaux à tout moment spécifique.
Dans le flux de travail de haut niveau, l'API Conversion entre en jeu à l'étape 3. Une fois que le client a saisi le code de vérification dans l'application, les détails de cette action peuvent être reçus via un webhook associé à l'action. Une vue d'ensemble plus détaillée d'un flux de travail 2FA typique est disponible dans ce document. Pour les besoins de notre flux de travail de haut niveau, une version mise à jour pourrait ressembler à ceci :
Un client s'inscrit ou crée un Account pour une application
Dans le cadre du processus d'inscription/de création de compte, le client spécifie un numéro de mobile à utiliser à des fins de 2FA
Effectuer une requête HTTP auprès de l'API Number Insight pour obtenir des informations sur ce numéro.
Utiliser les données de la réponse pour vérifier le numéro par rapport à certains paramètres prédéfinis. Si le nombre est jugé acceptable selon ces paramètres, il est ajouté, sinon il est rejeté.
Lors des connexions suivantes, dans le cadre de la vérification 2FA, un SMS est envoyé au numéro avec un code que le client peut ensuite saisir via l'interface utilisateur de l'application.
Une fois que la confirmation que le client a saisi avec succès le code de vérification a été reçue via le webhook associé, envoyez une requête HTTP contenant l'identifiant de message pertinent à l'API Conversion.
Veuillez contacter votre Account Manager ou votre service commercial lorsque vous êtes prêt à mettre en œuvre la Conversion API.
Partager:
Karl est un défenseur des développeurs pour Vonage, qui se concentre sur la maintenance de nos SDK de serveur Ruby et sur l'amélioration de l'expérience des développeurs pour notre communauté. Il aime apprendre, fabriquer des objets, partager ses connaissances et tout ce qui a trait à la technologie du web.