
Détecter les fraudes à l'échange de cartes SIM grâce à des contrôles de sécurité au niveau de l'entreprise
Temps de lecture : 7 minutes
Introduction
Dans ce tutoriel, vous apprendrez à utiliser la fonction SIM Swap de Vonage Identity Insights pour renforcer la sécurité d'une connexion à une application Web typique en détectant une fraude potentielle par échange de cartes SIM.
Qu'est-ce que la fraude à l'échange de cartes SIM ?
La fraude par échange de cartes SIM est une technique malveillante dans laquelle les criminels trompent les fournisseurs de téléphonie mobile en transférant le numéro de téléphone d'une victime vers une carte SIM sous leur contrôle. Une fois qu'ils ont détourné le numéro de téléphone, ils peuvent contourner l'authentification à deux facteurs (2FA), ce qui leur permet d'accéder à des comptes sensibles tels que des courriels personnels, des comptes bancaires ou toute application qui repose sur une vérification par téléphone. Cette fraude exploite une vulnérabilité dans le processus 2FA, ce qui en fait une menace importante pour la sécurité des comptes et la protection des données personnelles. Pour en savoir plus sur la fraude par échange de cartes SIM, lisez l'article de Norton's..
Qu'est-ce que la fonction SIM Swap de Vonage Identity Insights ?
La fonction SIM Swap de Vonage Identity Insights est une API puissante conçue pour atténuer les risques de fraude par échange de cartes SIM. En communiquant directement avec les opérateurs de réseaux (fournisseurs de services de communication (FSC)), l'API peut détecter si le numéro de téléphone d'un utilisateur a été récemment porté sur une nouvelle carte SIM. Ce mécanisme de détection permet d'éviter les reprises de compte en identifiant les activités suspectes liées aux changements de carte SIM. La fonction SIM Swap de Vonage Identity Insights constitue un moyen fiable et efficace de renforcer la sécurité des applications qui utilisent le 2FA.
Conditions préalables
Vonage API Account To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
Remarque : les API de réseau ne sont disponibles que chez les fournisseurs de services de communication (FSC) suivants et les pays suivants, et la liste des pays va bientôt s'allonger.
Vue d'ensemble
J'ai préparé un exemple de page de connexion d'une application web bancaire typique pour le tutoriel d'aujourd'hui. Lorsque SIM Swap Insight vérifie auprès des opérateurs de téléphonie mobile si des changements récents ont été apportés au numéro de téléphone de la carte SIM, l'utilisateur ne peut pas se connecter si de tels changements ont eu lieu. Dans le cas contraire, il pourra se connecter à son Account.
L'utilisateur se connecte et vérifie son identité via le frontal. La partie frontale envoie ces informations au serveur, qui communique alors avec les services de communication de Vonage pour vérifier les détails de l'échange de cartes SIM avec les fournisseurs de services de communication.
Overview Diagram
Architecture du projet
Pour votre référence, voici à quoi ressemblera le répertoire du projet. Vous pouvez trouver le code complet sur GitHub.
[node_modules]
[public]
client.js
style.css
[views]
main.html
index.html
.env
server.js
package-lock.json
package.json
private.key
Mise en place de l'environnement de développement
Pour commencer, vous devez installer Node.js et npm sur votre machine. Vous devrez également installer npm. Pour commencer, Node.js et npm doivent être installés sur votre machine. Vous devrez également installer certains paquets npm, notamment @vonage/identity-insights, dotenv, expresset nodemon pour gérer les variables d'environnement, les requêtes HTTP et les opérations du serveur.
npm install Structurer votre application
Nous allons importer et initialiser nos dépendances et indiquer à Express de servir des fichiers statiques à partir du dossier public. L'authentification avec Vonage est gérée automatiquement par le client IdentityInsights SDK lorsque vous fournissez votre ID d'application et votre clé privée ; aucune gestion manuelle de JWT ou de jeton n'est nécessaire.
// server.js
require("dotenv").config();
const path = require("path");
const express = require("express");
const { IdentityInsights } = require("@vonage/identity-insights");
const fs = require("fs");
const app = express();
app.use(express.json());
app.use(express.static("public")); Initialiser le client Identity Insights de Vonage
Ensuite, lisez vos informations d'identification dans les variables d'environnement et instanciez le client IdentityInsights. Le SDK gère toute l'authentification en interne ; il génère les jetons nécessaires à l'aide de votre identifiant d'application et de votre clé privée, de sorte que vous n'avez pas besoin de gérer les JWT manuellement.
La variable d'environnement VONAGE_PRIVATE_KEY peut être définie soit comme le chemin d'accès au fichier private.key (par exemple, ./private.key), soit comme la chaîne de caractères de la clé brute elle-même. Le code ci-dessous gère les deux cas :
const users = {
user1: { password: "123", phoneNumber: process.env.PHONE_NUMBER }
};
const APPLICATION_ID = process.env.VONAGE_APPLICATION_ID;
const PRIVATE_KEY = process.env.VONAGE_PRIVATE_KEY;
const PERIOD = process.env.PERIOD;
if (!APPLICATION_ID || !PRIVATE_KEY) {
console.error("VONAGE_APPLICATION_ID or VONAGE_PRIVATE_KEY not set");
process.exit(1);
}
const keyContent = fs.existsSync(PRIVATE_KEY)
? fs.readFileSync(PRIVATE_KEY, "utf8")
: PRIVATE_KEY;
if (!keyContent) {
console.error(
"INVALID private key. Check if the file exists or the environment variable is correctly set"
);
process.exit(1);
}
const identityClient = new IdentityInsights({
applicationId: APPLICATION_ID,
privateKey: keyContent,
});
Contrôles de l'échange de SIM
L'utilisation de l'outil identityClient que vous venez d'initialiser, vous pouvez appeler le SIM Swap Insight pour vérifier un numéro de téléphone. Le SIM Swap Insight vérifie la date d'activation d'une carte SIM sur le réseau mobile grâce à deux champs :
latest_sim_swap_atdate et heure en UTC ISO 8601 du dernier échange de cartes SIM effectué
is_swapped: indique si la carte SIM a été échangée au cours de la période spécifiée.
Le NuméroDeTéléphone est le numéro de téléphone que vous voulez vérifier ; c'est ce que l'utilisateur saisit lors de la connexion. La variable PERIOD indique le nombre maximal d'heures pendant lesquelles il faut vérifier si la carte SIM a été échangée (de 1 à 2400 ; la valeur par défaut est 240).
Si la réponse aboutit, la valeur booléenne du champ isSwapped indique si un échange de cartes SIM a eu lieu au cours de la période spécifiée.
async function checkSim(phoneNumber) {
try {
const resp = await identityClient.getIdentityInsights({
phoneNumber: phoneNumber,
purpose: "FraudPreventionAndDetection",
insights: {
format: {},
originalCarrier: {},
currentCarrier: {},
simSwap: {
period: parseInt(PERIOD),
},
},
});
return resp.insights?.simSwap?.isSwapped === true;
} catch (error) {
console.warn("Identity Insights SDK call failed:", error && error.message);
}
} Construire le login
Pour mettre en œuvre la connexion, nous allons créer un point de terminaison POST appelé /login qui vérifie si le nom d'utilisateur et le mot de passe saisis sont corrects, puis exécute un contrôle de swap SIM avant d'accorder l'accès.
app.post("/login", async (req, res) => {
try {
const { username, password } = req.body;
const user = users[username];
if (user && user.password === password) {
const simSwapped = await checkSim(user.phoneNumber);
if (simSwapped) {
return res.status(401).json({ message: "SIM Swapped" });
} else {
res.json({ message: "Success" });
}
} else {
res.status(401).json({ message: "Invalid username or password" });
}
} catch (err) {
console.error("Error during login:", err);
res.status(500).json({ message: "Error processing request." });
}
});
Construire le client
Le client.js récupère les informations relatives aux éléments HTML et les envoie aux points d'extrémité du serveur créés pour gérer les vérifications de connexion et d'échange de cartes SIM. Votre serveur traite les réponses de SIM Swap Insight et transmet ces informations à l'utilisateur par l'intermédiaire de votre interface. Si la carte SIM de l'utilisateur a été échangée récemment, informez-le et suggérez-lui de prendre des mesures immédiates, par exemple en contactant son opérateur de téléphonie mobile.
Créer le fichier des variables d'environnement
Créer un fichier .env pour votre projet et ajoutez les variables d'environnement suivantes. Votre VONAGE_PRIVATE_KEY peut être soit le chemin vers votre fichier de clé privée (par ex, ./private.key) ou le contenu de la clé brute sous forme de chaîne de caractères. Reportez-vous à l'article de blog de Michael pour une explication sur l'utilisation des variables d'environnement dans Node.js..
# Period in hours to check SIM Swap events
PERIOD=72
# Phone Number you'll use for the SIM Swap Insight
PHONE_NUMBER=+990123400
VONAGE_APPLICATION_ID=
VONAGE_PRIVATE_KEY=
Construire le Frontend
Créer un fichier index.html où les utilisateurs peuvent saisir leurs informations d'identification pour se connecter. Un formulaire permet à l'utilisateur de saisir son nom d'utilisateur et son mot de passe, et une fenêtre modale apparaît si un échange de cartes SIM a été détecté, affichant le message suivant : "Attention ! Un récent échange de cartes SIM a été détecté sur votre Account. Accès refusé".
Testez-le
Ajoutez un port d'écoute pour le serveur, par exemple 3000.
//server.js
app.listen(3000, () => {
console.log("Server is running on port 3000");
});Exécutez le fichier JavaScript du serveur pour initialiser l'application web.
node server.jsNaviguez jusqu'à localhost:3000 et entrez vos identifiants de connexion. Si le numéro de téléphone associé à ce compte a été échangé récemment, vous recevrez un avertissement et ne pourrez pas vous connecter. Sinon, vous pouvez vous connecter et voir la page d'aperçu de la banque.
Conclusion
Félicitations, vous avez atteint la fin de ce tutoriel ! Vous avez appris à utiliser l'outil SIM Swap Insight de Vonage Identity Insights pour détecter si les numéros de téléphone de vos utilisateurs ont été échangés au cours des derniers jours. Ce que vous avez appris aujourd'hui est essentiel pour protéger les comptes en ligne et prévenir les attaques par échange de SIM qui peuvent conduire à des prises de contrôle de comptes et à des fraudes.
Il est fascinant de comprendre comment fonctionne l'échange de cartes SIM et comment il affecte les informations personnelles. En mettant en œuvre des méthodes d'authentification multifactorielle et en étant conscient des tactiques courantes d'ingénierie sociale, vous pouvez mieux vous protéger et protéger vos utilisateurs contre ces escroqueries.
À mesure que les téléphones mobiles et les réseaux 5G se généralisent, il est encore plus important de surveiller votre sécurité. Vérifiez régulièrement votre carte SIM pour détecter toute activité inhabituelle, et faites attention aux informations personnelles que vous partagez sur les médias sociaux et les comptes en ligne.
Vous avez une question ou souhaitez partager ce que vous construisez ?
Rejoignez la conversation sur le Communauté Vonage Slack
S'abonner à la Bulletin d'information du développeur
Suivez-nous sur X (anciennement Twitter) pour les mises à jour
Regardez les tutoriels sur notre chaîne YouTube
Connectez-vous avec nous sur la page Vonage Developer sur LinkedIn
Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.
Pour en savoir plus
Améliorez votre authentification multifactorielle avec les API Verify et SIM Swap.
Essayez l API réseau de réseau pour commencer à utiliser l'API SIM Swap.
