Les cartes de crédit sont vulnérables aux attaques de type brute force
(metin.nextc.org)- La PCI DSS limite le stockage et l’affichage des données de carte, mais même avec les seules informations autorisées comme le BIN, les 4 derniers chiffres et la date d’expiration, il reste possible de poursuivre des tentatives de paiement supplémentaires chez d’autres commerçants
- Depuis un compte compromis, l’attaquant a obtenu via la page 3D Secure de la banque la confirmation que la carte était utilisable, le nom de la banque, le numéro de carte masqué et la date d’expiration complète, puis a déclenché environ 6 heures plus tard des tentatives d’authentification chez plusieurs commerçants
- Le numéro de carte de paiement (PAN) suit une structure avec IIN, identifiant de compte et chiffre de contrôle Luhn ; si la réponse de la passerelle de paiement indique quelle valeur est erronée, il devient plus facile de deviner le PAN, la date d’expiration et le CVV
- La vitesse observée en test était de 6 essais par seconde, soit environ 2 par seconde et par API ; comme l’IP change via des proxys et que le numéro de carte change aussi en continu, il est difficile pour les commerçants de détecter un brute force
- L’attaquant a utilisé des commerçants bénéficiant d’une exception 3D Secure pour transférer l’intégralité de la limite abaissée vers un portefeuille électronique ; l’argent a été remboursé via chargeback, mais la limitation de débit CVC2 de la banque se limite à un blocage de quelques minutes
Ce que PCI DSS empêche, et ce qu’elle laisse possible
- La PCI DSS est le standard industriel qui définit les mesures minimales de sécurité nécessaires lorsqu’on traite des données bancaires sensibles comme les cartes de crédit ; elle limite le stockage et l’affichage afin que l’ensemble des informations ne soit pas exposé même si un compte est compromis ou si les données de carte sont transmises à un tiers
- Selon PCI DSS 4, les informations pouvant être affichées à l’écran ou sur un reçu sont le PAN masqué, le nom du titulaire, le code de service et la date d’expiration ; pour le PAN, le BIN et les 4 derniers chiffres peuvent être visibles
- Les informations qui ne peuvent pas être affichées sont limitées aux données de piste complètes, au code de vérification de la carte et au PIN/bloc PIN
- Les sites d’e-commerce comme les reçus papier peuvent être touchés par le même problème ; une exposition partielle des informations de carte peut provenir non seulement d’un compte compromis, mais aussi de reçus qui n’ont pas été détruits
Déroulement de l’incident
- La victime utilisait une carte de crédit virtuelle avec une limite plafonnée, avait activé la double authentification 3D Secure et n’enregistrait sa carte que chez des commerçants connus
- Après la compromission d’un ancien compte, un SMS de tentative d’achat est arrivé depuis un site où la carte était enregistrée ; la victime s’est immédiatement connectée, a changé le mot de passe, a vérifié si l’achat avait eu lieu, puis a fortement abaissé la limite de la carte virtuelle
- La carte n’a pas été totalement désactivée, car il était estimé que les informations complètes de la carte n’avaient pas été compromises
- Environ 6 heures après la compromission initiale, 3 ou 4 tentatives de SMS 3D Secure ont été observées chez plusieurs commerçants jamais utilisés ; elles ont toutes échoué, mais sont devenues un indice clé pour comprendre la méthode d’attaque
- Quelques minutes plus tard, pendant l’appel à la banque pour désactiver complètement la carte, l’attaquant a utilisé d’autres commerçants sans 3D Secure pour retirer en plusieurs paiements l’intégralité de la limite abaissée
- L’argent a été déplacé vers le portefeuille électronique d’une place de marché permettant le retrait en espèces, puis la victime a demandé un chargeback et a été remboursée par la banque
Informations obtenues par l’attaquant
- Depuis le compte compromis, l’attaquant a tenté un paiement, a consulté la page 3D Secure de la banque, puis a annulé la commande et quitté le site
- Ce processus lui a permis d’apprendre que la carte était toujours utilisable, ainsi que le nom de la banque, le numéro de carte masqué et la date d’expiration complète
- En général, pour finaliser normalement un paiement par carte, il faut le PAN complet à 16 chiffres, la date d’expiration, le numéro CVC2 et des informations comme le téléphone mobile utilisé pour 3D Secure
- Dans l’attaque réelle, une partie seulement de ces informations suffisait pour poursuivre des tentatives chez d’autres commerçants
Structure du PAN et possibilité de devinette
- Le numéro de carte de paiement (PAN) est l’identifiant de carte utilisé pour les cartes de crédit, cartes de débit, cartes prépayées et cartes cadeaux
- Le PAN suit un schéma de numérotation commun conforme à l’ISO/IEC 7812, avec la structure interne suivante
- un Issuer Identification Number (IIN) de 6 ou 8 chiffres
- un identifiant de compte individuel pouvant aller jusqu’à 12 chiffres
- un chiffre de contrôle calculé avec l’algorithme de Luhn
- La banque de la victime n’autorisait pas un paiement avec le seul numéro de carte et exigeait aussi le PAN, la date d’expiration et le CVV
- Certaines banques et passerelles de paiement peuvent traiter un paiement avec le seul numéro de carte, ce qui était le point le plus difficile à croire pour la victime
Les conditions de brute force créées par les réponses de la passerelle de paiement
- La banque de la victime rejetait les paiements quand une valeur requise manquait ou était incorrecte, mais l’indiquait via des codes de réponse précisant quelle partie était erronée
- Exemples de réponses
- « pas une carte de crédit valide »
- « carte expirée »
- « toutes les autres informations sont correctes, mais le CVV est erroné »
- De telles réponses peuvent permettre à un attaquant de distinguer quelles valeurs du numéro de carte, de la date d’expiration et du CVV sont correctes ou non
- Dans l’attaque réelle, l’attaquant testait à une cadence de 6 essais par seconde, soit environ 2 essais par seconde et par API
- Ce rythme est difficile à détecter côté commerçant, car l’IP d’origine change via des proxys, le numéro de carte n’est pas identique d’une tentative à l’autre en raison même du brute force, et la fréquence des requêtes reste très faible
Le rôle des commerçants en exception 3D Secure
- La banque dispose d’une liste de commerçants bénéficiant d’une exception 3D Secure ; ils sont considérés comme fiables par la banque et peuvent accepter des paiements et abonnements sans 3D Secure
- En cas de chargeback, ces commerçants en assument la responsabilité
- L’attaquant a utilisé des commerçants sans 3D Secure pour transférer, dans la limite autorisée par la carte, des fonds vers un portefeuille électronique
Réponse après coup et problèmes persistants
- L’argent a été rapidement remboursé via chargeback
- Il a été signalé au commerçant que son système de conversion des paiements par carte en espèces avait servi à des retraits non autorisés, mais le commerçant a répondu qu’il fallait voir cela avec la banque
- Il a aussi été signalé au site d’e-commerce qu’exposer 10 chiffres du numéro de carte avec la date d’expiration facilitait l’attaque, mais le site a refusé de reconnaître cela comme une vulnérabilité et a répondu que c’était un choix de conception délibéré conforme aux standards PCI DSS 3 et 4
- Les personnes qui créent des API de paiement ou travaillent dans l’industrie des paiements ne se sont pas dites surprises, et certains commerçants ont répondu qu’ils pouvaient effectuer des transactions même sans date d’expiration
- Après l’incident, l’acteur qui convertissait les paiements par carte en argent liquide ne traite plus cela sans 3D Secure
- La banque de la victime conserve toujours une limitation de débit relativement permissive contre le brute force du CVC2, avec au mieux un blocage temporaire de quelques minutes pour la carte concernée lorsqu’une limite est atteinte
1 commentaires
Commentaires Hacker News
Au vu de cas similaires, l’auteur suivait peut-être une fausse piste. J’ai récemment vu apparaître de petits paiements non autorisés liés à FB/Meta sur ma carte bancaire, et on aurait dit que quelqu’un testait si la carte était détectée
J’ai appelé l’émetteur pour annuler le paiement, résilié la carte, puis reçu une nouvelle carte avec un nouveau numéro, une nouvelle date d’expiration et un nouveau CVV, mais même sur cette nouvelle carte jamais utilisée, des paiements frauduleux FB/Meta ont recommencé. La cause, c’était le portefeuille numérique : même après résiliation, le numéro de carte et d’autres infos pouvaient être transférés via le portefeuille numérique
J’ai rappelé l’émetteur pour lui demander de désactiver tous les portefeuilles numériques, et il y en avait 99. Ce n’était pas possible en ligne, il fallait passer par le centre d’appels. Même après qu’on m’a expliqué que tous les paiements récurrents seraient réinitialisés, j’ai dû insister pour faire résilier la carte et tous les portefeuilles numériques, puis attendre 20 minutes. Résilier une carte n’est peut-être pas ce que l’on croit, et comme les paiements récurrents sont très rentables pour les émetteurs, les résiliations semblent représenter une grosse perte de revenus
Blog Stripe : https://stripe.com/resources/more/what-is-a-card-account-upd...
Si la fuite venait d’ailleurs, je ne pense pas qu’ils auraient essayé de se connecter à des comptes e-commerce sans rapport
Ce billet ne traite pas le point le plus important. La compensation, c’est-à-dire le fait que la banque accepte de transférer de l’argent de mon compte vers un commerçant, est totalement distincte de l’autorisation
L’autorisation, c’est l’EMV moderne, donc l’authentification « puce et PIN », le CVV en ligne, ainsi que divers mécanismes par lesquels la banque se protège contre la fraude et protège accessoirement le commerçant
Le réseau peut très bien accepter qu’Amazon dise : « voici un numéro de carte, et cette personne dit nous devoir 400 dollars ». Ce n’est qu’une compensation, et cela se retrouve sur le relevé. Sans cryptographie sophistiquée, sans même un mécanisme digne d’un PIN à 4 chiffres, ni vérification du niveau “nom de jeune fille de la mère”, juste un « d’accord, on vous croit ». C’est pourquoi le consommateur finit par payer s’il ne lit pas son relevé de carte de crédit et ne conteste pas les paiements inconnus
Le réseau a très peu d’incitation à se soucier du fait que les consommateurs se fassent plumer. S’il n’y a pas de contestation, tout le monde est content ; s’il y en a une, il suffit de récupérer l’argent auprès du commerçant, donc ce n’est pas leur problème
Les prestataires de paiement n’autorisent pas l’énumération de cartes ni les tests de cartes par force brute sur l’ensemble des numéros, et les réseaux de cartes infligent aussi de lourdes sanctions aux commerçants et aux processeurs qui ne les bloquent pas
Énumérer le CVC2 sur un seul PAN, c’est une autre histoire
C’est justement la preuve que l’infrastructure anti-fraude a réellement protégé l’utilisateur. La banque a absorbé la perte liée à la fraude et l’argent a été remboursé
Au final, les systèmes bancaires se soucient des pertes dues à la fraude et sont aussi très compétents pour la détecter. Le système de paiement par carte est si vaste qu’il est extrêmement difficile à faire évoluer, donc sans preuve solide qu’un changement précis réduira réellement le taux de fraude, les banques préfèrent ne rien changer
La banque émettrice gagne des frais d’interchange sur chaque transaction, donc si elle n’est pas responsable de la fraude, son incitation par défaut est d’approuver autant que possible et de régler ça plus tard via des chargebacks. Cela dit, le 3DS change pas mal ce calcul, et les paiements en présentiel sont aussi généralement à la charge de la banque émettrice
Au final, tous les consommateurs se partagent le coût de l’ensemble de la fraude. Ce n’est simplement pas affiché comme ligne distincte sur la facture : nous payons tous un peu plus cher tout ce que nous achetons
Quand cela m’est arrivé avec eBay dans une affaire de carte de crédit volée, au début tout allait bien, puis eBay a envoyé un énorme paquet de documents à la banque, le chargeback a été inversé, et peu après mon compte bancaire a même été fermé
Le fait que l’argent soit revenu via chargeback ne signifiait pas que l’affaire était terminée. Au départ, cela semble être traité à titre provisoire pendant qu’on laisse à l’autre partie le temps de répondre, puis eBay m’a enterré sous la paperasse, et il a fallu environ 30 jours pour que le chargeback soit annulé. Leur explication a été si convaincante que ma banque a fini par me traiter, moi, comme un fraudeur
Je ne suis d’ailleurs pas certain à 100 % qu’il soit exact de dire que la banque absorbe la perte. Si la partie frappée par un chargeback le conteste, c’est bien qu’au final quelqu’un — la partie qui le subit ou celle qui le lance — doit porter la perte. Si la structure était telle que la banque absorbait vraiment cette perte, eBay n’aurait aucune raison d’employer du personnel spécialisé pour enquêter et répondre à mon chargeback
Ce serait beaucoup plus utile si 3D Secure était obligatoire partout, mais j’ai l’impression qu’aux États-Unis c’est encore très peu utilisé. Comme le marché américain est énorme, les émetteurs n’ont guère d’autre choix que d’accepter les demandes sans 3D Secure, sinon leurs clients ne pourraient plus utiliser leur carte à trop d’endroits
C’est donc un mécanisme anti-fraude très puissant qui se retrouve fortement limité, ce qui est frustrant pour une bonne partie du reste du monde
J’ai du mal à comprendre si les consommateurs américains préfèrent vraiment se faire frauder plutôt que d’accepter un léger inconvénient. Même si on n’est pas soi-même victime, les commerçants répercutent le coût de la fraude et de l’assurance dans le prix des produits, donc tout le monde paie au final
Cela dit, à l’échelle de l’industrie, c’est un problème de coordination classique. Si les conversions baissent, c’est parce qu’il reste des alternatives plus simples ; si tous les commerçants et toutes les banques imposaient le 3DS en même temps, il n’y aurait plus d’option plus pratique vers laquelle se tourner. Qu’on aime ou non, les utilisateurs finiraient par s’habituer à ce nouveau mode plus sûr, et les conversions remonteraient
C’est l’approche adoptée par l’UE, qui a rendu le 3DS obligatoire pour beaucoup de paiements, même si les régulateurs y ont aussi reconnu qu’une application à 100 % serait contre-productive et qu’il existe un bon point d’équilibre quelque part entre les deux
Autre illustration du même principe : les cartes de crédit américaines n’ont pas de PIN. Si une banque introduisait seule le PIN, ses clients utiliseraient simplement davantage les cartes concurrentes qui n’en demandent pas, et l’usage chuterait fortement. Sur d’autres marchés, grâce à l’intervention réglementaire ou aux incitations des réseaux de cartes, toutes les cartes ont un PIN, et les gens s’y sont tout simplement habitués
À l’époque des débuts de la carte de crédit, c’est-à-dire quand elle se développait aux États-Unis, le Congrès a adopté le Fair Credit Billing Act de 1974, qui limitait la responsabilité du consommateur à 50 dollars si la carte perdue était signalée dans les 60 jours suivant la fin du cycle de facturation frauduleux. À l’époque, les paiements se faisaient sur papier, avec ces machines qui imprimaient une copie carbone de la carte dans un bruit de « ka-chunk », et tout était entièrement hors ligne
Cette loi n’a pas changé et, en pratique, la plupart des banques renoncent même à ces 50 dollars et ne font porter aucune responsabilité au titulaire sur les incidents signalés. Du point de vue de la banque, cela ne vaut tout simplement pas la peine d’agacer les clients pour 50 dollars
Avec Internet, les cartes sont soudain devenues beaucoup plus faciles à voler et à exploiter, mais les banques continuent malgré tout d’assumer toutes les pertes signalées dans les 60 jours suivant la fin du cycle de facturation. C’est pourquoi les banques américaines ont énormément investi dans la surveillance en temps réel des transactions par carte de crédit, et elles la prennent très au sérieux puisqu’elles en portent la responsabilité finale. En face, les consommateurs y prêtent moins attention. Si les cartes américaines paraissent beaucoup plus permissives du point de vue du consommateur, comparées aux cartes européennes, c’est parce que la responsabilité y repose beaucoup plus sur la banque, qui investit donc bien davantage en arrière-plan
Par ailleurs, l’UE a réglementé les frais d’interchange que les émetteurs peuvent facturer, tandis que les États-Unis n’ont pas instauré de plafond. Résultat : les titulaires américains peuvent obtenir des récompenses importantes sur l’usage de leur carte, surtout parmi les 10 % les plus aisés, ce qui est pratiquement impossible avec les cartes émises dans l’UE où l’interchange est plafonné
Un grand procès est en cours pour permettre aux commerçants d’accepter uniquement des cartes à faibles frais. Les contrats standard VISA/MC/AMEX imposent de traiter toutes les cartes de la même manière, ce qui incite les émetteurs à pousser les consommateurs vers des cartes à interchange plus élevé. Il faudra voir l’issue du procès, mais d’ici là, les gros dépensiers américains peuvent profiter de récompenses bien supérieures, ce qui pousse aussi à utiliser davantage la carte et réduit les frictions par rapport au modèle européen
Ce n’est pas que nous préférons nous faire frauder ; c’est surtout une question de négociation entre les émetteurs de cartes et les commerçants
Il y a longtemps, quelqu’un que nous avions recruté dans mon entreprise a commencé à se vanter d’avoir trouvé un moyen d’ajouter de la valeur stockée sur des cartes-cadeaux. Plus tard, on a appris qu’il faisait l’objet d’une enquête du FBI
C’était en plus chez un sous-traitant de l’État, et au final l’agent de sécurité le plus imposant que j’aie jamais vu est venu l’escorter dehors
Les cartes de crédit virtuelles existent depuis longtemps. Il me semble que Bank of America ou Citi en proposaient déjà il y a plus de 15 ans, peut-être sous forme d’application Java ou d’exécutable autonome. Je suis surpris que cela ne se soit pas davantage généralisé
Robinhood l’a extrêmement bien implémenté. C’est le meilleur système de cartes de crédit virtuelles que j’aie utilisé, et l’expérience est très fluide. On peut autoriser la carte pour un usage unique, 24 heures, ou de façon illimitée jusqu’à annulation, avec une excellente UI/UX
Dans un monde où tout est devenu abonnement, je ne comprends pas pourquoi cette fonctionnalité ne s’est pas imposée. Pouvoir fixer une date d’expiration et un plafond de dépense pour éviter les négociations pénibles lors d’une résiliation d’abonnement, c’était vraiment excellent
Récemment, j’ai reçu un SMS de ma banque signalant une transaction suspecte à l’étranger sur la carte de ma femme, et le montant était littéralement de 0 dollar, à un moment où elle n’utilisait ni son téléphone ni son ordinateur
Au départ, j’ai cru que le SMS lui-même était du phishing, mais après vérification en ligne, le format du message correspondait bien et la page web de la banque garantissait qu’elle ne demandait aucune information pendant le processus de retour, donc nous avons confirmé qu’elle n’avait pas effectué le paiement
La banque a immédiatement annulé la carte et envoyé une nouvelle
Au début, je pensais que le système de sécurité de la banque surréagissait, mais en réalité quelqu’un faisait bien ce qui est décrit dans cet article, et la banque semble simplement l’avoir détecté plus tôt
Il vaut mieux avoir une carte dédiée aux paiements en ligne et n’y mettre que le montant nécessaire
Je sais que c’est une idée naïve
Pour revenir au billet, la faille était le mot de passe, et cela a ensuite mené vers d’autres commerçants qui n’utilisent pas 3D Secure
À lire l’article, on dirait que les attaquants disposent d’un système entièrement automatisé, donc les grands commerçants devraient traiter les tentatives de connexion automatiques au même moment depuis une même adresse IP sur des comptes différents. Même en regardant nos logs Wordfence, la rotation d’IP n’est pas si rapide, donc un blocage IP permanent pourrait probablement déjà aider dans une certaine mesure
Une fuite de mot de passe ne devrait pas pouvoir se transformer en fuite complète des données de carte bancaire. Les mêmes données figurent aussi sur les reçus papier imprimés en magasin, parfois sur 4 chiffres, parfois sur 10. On peut donc encore imaginer des attaques par force brute même à partir de reçus papier abandonnés en magasin
Pour compléter, le commerçant ne peut pas choisir librement le niveau de sécurité voulu chez son prestataire de traitement des cartes de crédit. Par exemple, avec authorize.net, on peut accepter des paiements même si l’adresse ne correspond pas
La vraie question, c’est comment l’argent a ensuite été retiré. Ont-ils acheté des cartes-cadeaux chez un commerçant à la sécurité laxiste ?
Deviner un numéro et faire sortir l’argent du système sont deux choses complètement différentes
Il existe une légère polarisation du marché du processing : d’un côté, ceux qui offrent de la simplicité au client et réduisent sa charge ; de l’autre, ceux qui exposent toute la complexité et donnent un contrôle granulaire. Les premiers ne permettent pas de définir les exigences de sécurité, les seconds proposent des centaines d’options. Bien sûr, certains acteurs se situent entre les deux, et ces deux axes visent généralement des clientèles différentes