Il est alors possible d'obtenir rapidement la bonne combinaison (le mois et l'année) en moins de 60 essais. L'équipe de chercheurs a pris comme limite haute une durée de validité de 5 ans pour les cartes bancaires, soit 60 mois et donc autant (ou aussi peu selon comment on regarde les choses) d'essais. Une fois la date de validité connue, ils peuvent passer à la seconde étape : récupérer de la même manière le cryptogramme visuel ou code CVV.
Pour cela, ils interrogent d'autres revendeurs qui demandent cette fois-ci le numéro de carte, la date de fin de validité ainsi que le code CVV pour valider une transaction. Ils passent alors en revue toutes les possibilités pour ce dernier, sachant qu'il n'y en a finalement qu'un millier : de 000 à 999. Cette opération peut donc être relativement rapide si elle n'est pas bloquée par les serveurs. Par une technique similaire, il est ensuite possible de récupérer le code postal du propriétaire de la carte.
Dans la vidéo ci-dessus, l'outil mis au point par les chercheurs n'a eu besoin que d'une poignée de secondes pour trouver le code CVV d'une carte bancaire à partir de son numéro et de sa date de fin de validité. Nous sommes par contre obligés de les croire sur parole sur la rapidité et sur la véracité de la solution trouvée.
Contrairement à MasterCard, Visa ne bloque pas ce genre d'attaque
Cette technique d'attaque par force brute est possible car, toujours selon les chercheurs, de nombreux sites – y compris de très gros revendeurs – n'imposent aucune limite sur le nombre d'essais, laissant ainsi d'éventuels pirates tester toutes les combinaisons possibles (et il y en a finalement assez peu).
Par exemple, une personne ne disposant que du numéro de la carte bancaire peut obtenir la date de fin de validité, puis le code CVV et enfin le code postal de son propriétaire. Pour les deux premières opérations, seules 1 060 combinaisons sont possibles car il est possible de chercher l'un puis l'autre, alors que ce nombre grimpe à 60 000 (60 x 1 000) s'il fallait trouver en même temps la date et le code CVV.
Toujours selon le constat des chercheurs, Visa ne bloque pas non plus ce genre d'attaque, ce qui est d'autant plus problématique. Une parade relativement simple à implémenter serait donc d'ajouter un nombre de tentatives maximum pour éviter une attaque par force brute. Une solution d'autant plus viable que le principal concurrent de Visa l'aurait mise en place.
L'étude indique en effet que « lorsque l'attaque est appliquée à une carte MasterCard, elle est détectée » et bloquée, y compris si les tentatives sont réparties sur plusieurs revendeurs différents. Pour l'équipe, cela signifie que « les réseaux de paiement ont la capacité de détecter et de prévenir » ce genre de tentative de piratage, au moins chez MasterCard.
Les chercheurs ajoutent avoir contacté 36 boutiques en ligne afin de leur faire part de leur découverte. 12 d'entre elles ne demandaient qu'un numéro de carte bancaire, 12 autres qui nécessitaient en plus de saisir la date de fin de validité de la carte et enfin les 12 dernières obligeaient le client à entrer le code CVV.
Seuls huit d'entre elles ont apporté des modifications suite à ce contact. Suivant les cas, la méthode utilisée est différente : ajouter un champ pour saisir le code postal en plus des autres informations, instaurer des limites pour bloquer les attaques par force brute ou un captcha, par exemple. Il n'en reste pas moins que dans la grande majorité (78 %) rien n'a changé.
Interrogé, Visa botte en touche
De notre côté, nous avons évidemment contacté Visa afin d'avoir le point de vue de la société sur la question ainsi que sur les actions qu'elle pourrait rapidement mettre en place. Si l'entreprise reconnait évidemment avoir connaissance de cette étude, ses explications restent relativement évasives :
« Cette recherche ne tient pas compte des multiples niveaux de prévention de la fraude qui existent au sein du système de paiements, chacun d'entre eux devant être respecté pour rendre une transaction possible dans le monde réel.
Visa s'engage à maintenir la fraude à un niveau bas et travaille en étroite collaboration avec les émetteurs de cartes et les acquéreurs pour rendre très difficile l'obtention et l'utilisation illégale des données des titulaires de carte. Nous fournissons aux émetteurs les données nécessaires pour prendre des décisions éclairées sur le risque des transactions. Il existe aussi des mesures que les commerçants et les émetteurs peuvent prendre pour contrecarrer les tentatives d'attaques en force.
Pour les consommateurs, la chose la plus importante à retenir est que si leur numéro de carte de paiement est utilisé frauduleusement, ils sont protégés de toute responsabilité.
Visa propose également une sécurité accrue avec Verified by Visa (basé sur la norme 3DSecure) qui offre une meilleure sécurité pour les transactions relatives au commerce électronique. Nous travaillons actuellement pour y intégrer les nouvelles spécifications 3DSecure 2.0, annoncées récemment. Lorsqu'un commerçant choisit de ne pas utiliser Verified by Visa pour une transaction sans carte, il assume le risque de fraude.
Visa se félicite des efforts déployés par l'industrie et les universités pour identifier et traiter les éventuelles vulnérabilités dans le système de paiements. Parallèlement à nos propres contrôles internes et à nos tests, cela permet à Visa et à l'industrie des paiements de rendre les paiements toujours plus sûrs »
Un rappel des protections et des risques, mais pas de plan d'action précis
Nous n'avons donc aucune réponse précise concernant d'éventuelles mesures que Visa pourrait mettre en place pour éviter ce genre d'attaque par force brute, comme le propose notamment MasterCard. S'il existe visiblement des protections permettant de « contrecarrer les tentatives d'attaques en force », elles ne sont pas détaillées et, semble-t-il, trop peu efficaces et /ou mises en place, puisque les chercheurs ont pu les contourner facilement.
Le groupe vante également son service « Verified by Visa », une protection basée sur 3D Secure qui ajoute une étape supplémentaire lors de la validation du paiement, dont la prochaine mouture 2.0 est sur les rails. Pour Visa, si un commerçant en ligne décide de ne pas utiliser cette protection pour une transaction, « il assume le risque de fraude ». Au moins, les choses sont claires pour les boutiques en ligne.
Côté utilisateur, le discours est différent puisque Visa nous explique que ses clients sont protégés contre une utilisation frauduleuse du numéro de leur carte bancaire. Dans tous les cas, activer par défaut une protection qui empêche une attaque par force brute ne pourrait être qu'une bonne chose pour Visa.
En effet, tout renforcement de la sécurité est bon à prendre, aussi bien pour les commerçants que pour les clients, mais rien n'est précisé sur ce point dans la réponse officielle de Visa. Dommage.
NextInpact