Connexion Premium

Des chercheurs ont fait « revivre » des cartes VISA sans contact après expiration

Oups

Des chercheurs ont fait « revivre » des cartes VISA sans contact après expiration

Illustration : Flock

Grâce à des failles dans le protocole de paiement sans contact et à son implémentation par VISA, il est possible d’effectuer des paiements sans contact alors que les cartes ont expiré.

Des cartes de crédits « zombies », c’est ainsi que des chercheurs de l’Université du Massachusetts Amherst qualifient certaines cartes de crédits VISA qui permettent de payer en mode sans contact alors qu’elles sont périmées.

Lorsqu’une carte de crédit arrive à péremption et qu’elle est remplacée par une nouvelle, on peut avoir tendance à se dire qu’elle est définitivement inutilisable par quiconque et s’en défaire sans trop de soucis. Mais ce n’est pas forcément le cas.

Raja Hasnain Anwar, Gerard DeCunha et Muhammad Taqi Raza ont expliqué comment ils ont réussi à passer outre cette date de péremption sur certaines cartes à la conférence Usenix qui s’est tenue à Baltimore la semaine dernière. Leur article, relu par des pairs, est en ligne sur le site de Usenix.

Ils y expliquent que les cartes qu’ils ont pu faire « revivre » ont bien toutes des dates de péremption mais que le protocole sans contact EMV créé par Europay, Mastercard et Visa (d’où son nom) et surtout son implémentation par VISA permettent de passer outre.

L’implémentation de VISA laisse particulièrement à désirer

Il reste 75% de l'article à découvrir.

Cadenas en colère - Contenu premium

Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.

Accédez en illimité aux articles

Profitez d'un média expert et unique

Intégrez la communauté et prenez part aux débats

Partagez des articles premium à vos contacts

Commentaires (33)

votre avatar
Très interressant. :inpactitude:
Juste un bemol, pour les vieux (comme moi ) qui ai connu l'époque de "fer à repasser", et des copies carbonnes on nous avait appris à recuper le carbonne et lors de l'expiration de la carte de la détruire (triples coups ciseaux voir brulage de la carte).:phibee:
votre avatar
La destruction physique de la carte limite certains cas, mais pas tous, hélas.

Ou alors tu découpe ton téléphone si le process de suppression du wallet est trop chiant (ce qui arrive parfois) :fumer:
votre avatar
Ou alors tu découpe ton téléphone si le process de suppression du wallet est trop chiant (ce qui arrive parfois)
Pour le coup j'ai supprimé mon ex-Swile en deux coups de cuillère à pot dessus.
votre avatar
Mais la question qui me brûle les lèvres : Est-ce que de l'argent est pris du compte de la personne ou bien juste le commerçant se fait avoir et ne reçoit rien ?
votre avatar
Même question.
Ou alors est-ce que c'est visa qui perds en ne pouvant pas valider la transaction auprès de la banque ?

Dans ce dernier cas c'est peut-être un risque maîtrisé et tant que ça ne leur coûte pas trop cher ils laissent faire ?

Ce passage de l'article va dans ce sens :
Ce comportement reflète les choix de conception du Kernel 3 [celui de VISA], qui privilégient la flexibilité et la continuité des transactions au détriment de l’intégrité de bout en bout
votre avatar
Y'a forcément un perdant, le porteur (titulaire du compte), la banque du client, le commerçant suivant le cas.
L'argent est bien pris quelque part.

Je suis curieux de la réponse de Visa France à Next, si vous pouvez mettre à jour l'article en suivant.
votre avatar
Bah, je me rappelle des premières implémentations du protocole sans contact qui vérifiait le plafond max du montant payé en euros, mais pas dans les autres devises... En gros si tu demandais 21 euros avec une limite à 20, ça bloquait, mais si tu demandais 100 000 USD, là, ça passait.
votre avatar
"pas dans les specs" a répondu le presta en charge de développement.
votre avatar
Ca me rappelle la sous-traitance chez un prestataire indien il y a quelques années. Qqn dans ma boîte (pas dans mon équipe, mais l'anecdote est vraie) demande au prestataire de faire un programme qui fait telle et telle chose. L'équipe récupère ensuite le prog, lance la compilation. Erreur. Le programme ne compile pas. "Ca n'était pas dans les specs qu'il fallait que ça compile, faut passer ça à l'équipe de test".
votre avatar
Ca me rappelle la sous-traitance chez un prestataire indien (...)
Ah mais eux c'est leur spécialité... Faut limite leur dire comment respirer sinon ils vont mourir. :craint:

Et à chaque projet où tu réimplémentes des patterns standards, t'as l'impression qu'il faut encore tout réexpliquer et qu'ils vont redévelopper la roue encore et encore. Et ce en travaillant avec la même personne. Pire qu'un LLM dont on efface le contexte.

Une perte de thunes.

Pour donner un exemple dans mon domaine : ils n'ont jamais compris que coder en dur des codes magasins n'était pas la meilleure approche pour un déploiement.
votre avatar
en même temps on parle d'un pays énorme qui forme beaucoup d'ingénieurs, forcément les moins chers des moins chers (qui gagnent les appels d'offre ;)) sont probablement composés des couteaux les moins aiguisés du tiroir :) ceux qui n'ont pas été recrutés par Google, Microsoft, etc.
votre avatar
Être recruté par MS ou Google, s'pas un gage de qualité à mes yeux vu que leurs produits sont tous bardés de comportements moisis.

Rien que tout à l'heure Waze sur Android. La playlist de musique que j'avais s'arrêtait, soudainement les instructions vocales se tronquent.

Bref, des boîtes qui brassent des milliards et font des produits à peine fonctionnels pour du basique.
votre avatar
oui certes (probablement plus de la faute du département marketing // de la pression des investisseurs que nécessairemment du fait de la mauvaise qualité de leurs ingés) ; mais je peux aussi te garantir que mes collègues indiennes qui font leur thèse en France ou ailleurs sont pas plus cons que les français, donc bref d'une façon ou d'une autre c'est bien que les presta indiens sélectionnent des mauvais candidats, plutôt que le fait que leur éducation serait mauvaise :)
votre avatar
Ma foi je ne saurais pas chercher les causes, et je ne les cherche pas. J'ai clairement autre chose à faire après avoir perdu mon temps à réexpliquer trente fois des concepts de base sur chaque projet.

La réalité que je constate dans tous les cas : une énorme perte de temps et d'argent.
votre avatar
Mais 1 ingé = 1 ingé dans la tête des grands pontes. Et comme ils ne regardent que le coût, pour eux, ca revient moins cher de tout externaliser en Inde. Quitte à refaire la même demande 4x (et donc multiplier le coût) pour obtenir un truc à peu près viable, qui ne se pète pas la gueule dès qu'on le touche, pour un coût total au final plus élevé que si c'avait été fait en France.
votre avatar
Il y a une vidéo de Veritasium ou ils prélèvent 10000 USD sans contact via un iPhone verrouillé.
C'est la combinaison d'une mauvaise implémentation de Visa pensée pour les paiements hors ligne (genre métro) et de ce que tu décris : ils peuvent jouer sur la devise ou un truc du genre pour contourner la limite absolue (je ne me souviens plus exactement).
votre avatar
Y'a que moi que ça choque, que les vérifications des informations de paiement soient faites par le terminal et pas par le serveur ?
Ça me donne l'impression d'un dev mal foutu où les vérifications sont faites uniquement en front et que le back laisse tout passer parce que le token est bon...
votre avatar
Si tu fais tout faire au serveur, il va saturer. Je suppose que la vérification par le terminal c'est la signature des différents éléments par la clé privée de la banque (ou celle de Visa/MasterCarte/ Réseau CB).
votre avatar
Tu peux faire faire des contrôles sur le TPE, mais la validation finale devrait se faire forcément côté serveur.
Les serveurs peuvent être dimensionnés en conséquence.
votre avatar
Y'a que moi que ça choque, que les vérifications des informations de paiement soient faites par le terminal et pas par le serveur ?
Les magasins qui passent hors ligne, ça arrive plus souvent qu'on ne l'imagine et les TPE installés en caisse ne sont pas forcément sur réseau mobile (même si ça tend à se généraliser). Quand t'as une carte à authorisation systématique, ça bloque si y'a pas de réseau.

Sans parler de la latence derrière. Faut pas croire que tous les commerces sont sur des fibres en GB :non:
votre avatar
Pour le côté "hors ligne", ça pourrait être compréhensible, mais j'ai déjà eu le cas de tout un magasin sans TPE à cause des problèmes serveurs côté banques, donc je vois mal comment ça marche.
Et puis ça veut dire que si le réseau d'un magasin tombe et qu'une transaction ne devrait pas passer car serait rétorquée par le serveur (exemple, carte bloquée), alors elle passe quand même.

Autant je comprends tes arguments, autant ça me semble une prise de risque non négligeable.
votre avatar
Tout à fait. Beaucoup de TPE en France enregistrent le paiements (après qq contrôles et chiffrement par clé unique) et ne transmettent ces paiement que tous les soirs/2 jours/3 jours(c'est parfois le socle du TPE qui peut être connecté au réseau).
Lorsque l'établissement bancaire reçoit ces lots de paiements, elle fait ensuite un rapprochement avec les mouvements sur les comptes bancaire - la phase de "réconciliation". Il peut y avoir des ratés qui sont alors en général à la charge de la banque s'il n'y a pas suspicion de fraude.

C'est pourquoi pas mal de banques ont bien accueilli Apple Pay. La phase d'identification biométrique est une vérification supplémentaire qui diminue les risques d'erreur ou fraude. L'économie faite par ce risque en moins compensait la commission prélevée par Apple.
votre avatar
Le fonctionnement classique en France c'est temps réelle (avec ou sans appel) et le soir temps différé.
La fréquence pour le soir est variable puisque les appels sont généralement payant à la charge du commerçant.
La "réconciliation" elle n'est pas forcément faite là où tu penses et pour les raisons que tu penses (dans le cas où la partie temps réelle à fait un appel). Le fonctionnement sans "réconciliation" comme tu l'appelles marche très bien en France même si ça a certains incovénients parfois.

En cas de fonctionnement "OFFLINE", que la banque autorise sous condition au commerçant, c'est le commerçant qui prend le risque s'il accepte une transaction, pas la banque.

L'accueil d'ApplePay pour les banque ? j'ai pas la même vision que toi... En France, les banques ne l'ont pas fait de gaité de cœur pour 2 raisons, dont la dime Apple côté émetteur de cartes. JE vous laisse regarder la vaste littérature disponible à ce sujet en ligne :)
Côté US c'est autre chose, ils sont passez de la piste avec signature à ApplePay, donc bien plus sécurisé, en France, on est passé d'un code PIN personnel à .... ApplePay, le gain de temps est marginal côté France/Europe, mais bien plus important côté US.
votre avatar
Merci pour ce partage d'xp. J'ai beau bosser dans le domaine du retail depuis bientôt deux décennies, je n'ai hélas jamais eu l'occasion d'approfondir la partie encaissement et paiement sur mes projets vu qu'ils ont toujours été sur le back office, la supply ou les fonctions support. :yes:
votre avatar
C'est un peu l'intéret des TPE et des cartes premium en fait : ça fonctionne presque toujours sans réseau...

Pour les cartes d'étudiant -type visa electron- ou (les cartes tickets restau...) la carte refuse tout systématiquement, et le TPE déclenche un appel systématique à la banque: c'est très chiant surtout si le TPE n'a pas le réseau (il faut le remettre sur la base le temps de la transaction, et ça mouline 15/20 sec : pas très pratique pour régler sur une terrasse par exemple)

Donc non le dev est plutôt bien foutu, et c'est la puce de la carte qui porte la sécurité, le TPE ne fait qu'agir sur instruction (demander le code, demander le contrôle à la banque...)
votre avatar
On dirait bien que c'est un problème d'implémentation, car un descriptif du processus trouvé chez un autre fournisseur de solutions de paiement inclut bien un échange final avec un serveur bancaire.

Il s'agit cependant d'un cas nominal. On pourrait se poser la question des arbitrages en cas de mode dégradé : des problèmes de communication réseau du TPE doivent-ils l'amener à refuser les paiements, ou les accepter, quitte à ne pas les vérifier ou le faire plus tard ?
En fonction de notre profil (client, commerçant, intermédiaire de paiement, banquier ou technique), nous aurons certainement des priorités différentes…

Je me souviens pour ma part avoir réussi à trouver & inhiber physiquement l'antenne NFC sur mon ancienne carte bancaire; je n'ai pas retenté la manipulation sur la nouvelle.
votre avatar
Oups... Je donne toute mes cartes expirées aux gamins pour jouer à la marchande :/
votre avatar
@potn
> Y'a que moi que ça choque, que les vérifications des informations de paiement soient faites par le terminal et pas par le serveur ?
Ça me donne l'impression d'un dev mal foutu où les vérifications sont faites uniquement en front et que le back laisse tout passer parce que le token est bon...


Le système est prévu pour être resillent, une partie des contrôles sont fait en local, et une autre partie sont prévus "Online". Je ne préciserai pas ce qui est fait "Online" puisque ce sont les toutouilles de chaque banque et que la doc "générale" n'est pas en diffusion libre.
Le mode dégradé est prévus parce qu'un système n'est jamais up à 100% quoi que tu fasses.

@Soriatane
> Si tu fais tout faire au serveur, il va saturer. Je suppose que la vérification par le terminal c'est la signature des différents éléments par la clé privée de la banque (ou celle de Visa/MasterCarte/ Réseau CB).
Les systèmes sont prévus pour du 100% appels dans la mesure où le mode "connecté" est la règle pour de nombreux réseaux d'acceptation, et en raison d'évolutions technologiques également.
Pour fonctionnement réelle derrière, il y a plein de paramètres qui sont vérifiés, tant en local qu'à distance du côté des banques.

@SebGF
> Les magasins qui passent hors ligne, ça arrive plus souvent qu'on ne l'imagine et les TPE installés en caisse ne sont pas forcément sur réseau mobile (même si ça tend à se généraliser). Quand t'as une carte à authorisation systématique, ça bloque si y'a pas de réseau.
> Sans parler de la latence derrière. Faut pas croire que tous les commerces sont sur des fibres en GB :non:
Les TPE dans les Hyper/Super sont en connectés filaire, plus fiable, non soumis à la réception d'un signal dans une cage de Faraday, ...
Cela n'empêche pas les coupures au niveau du magasin, de la banque, du réseau d'acceptation (CB/Visa/Mastercard/Amex/Discover/...),
La plupart des cartes à autorisation systématiques (et y'en a bien plus que tu ne peux l'imaginer en réalité) on généralement un plafond "OFFLINE" pour fonctionner, le montant est variable suivant les banques.
Pour les cartes "rechargeables" par contre ce n'est pas le cas, donc la carte est bloquée.

Concernant la latence, elle est plutôt bonne puisqu'il n'est pas nécessaire d'avoir la fibre pour faire passer des dizaines d'appels en parallèles :prof:
votre avatar
Tout a fait, les rares fois où les magasins sont en panne de réseaux, tu peux en général payer avec une carte de type gold, quand les porteurs de cartes de base (ou carte chelou genre banque en ligne) laissent leur course le temps de retirer du liquide...
votre avatar
Ça me donne l'impression d'un dev mal foutu où les vérifications sont faites uniquement en front et que le back laisse tout passer parce que le token est bon...
Ou alors le scénario n'a été écrit par personne.
Ou alors une zone d'ombre a été tranchée dans l'urgence car il fallait livrer "hier".
Ou alors des arbitrages ont été faits pour laisser passer les choses en état dégradés.
Ou alors des options sont possibles sur les TPE ou au niveau de l'intermédiaire de paiement et les commerçants ne sont pas au courant de la valeur par défaut.
Conjectures, conjectures, conjectures…

Ce réflexe de considérer que les développeurs (autres que soi) sont des branquignoles, et que tout problème fonctionnel soit immédiatement attribué au développement…
votre avatar
Alors juste comme ça : je ne dis pas que C'EST mal foutu (les réponses que j'ai eues m'ont montré le contraire), mais ça m'en donnait l'impression.
Après, là, on parle d'un équivalent à un enregistrement en base de données : en tant que développeur, tu DOIS TOUJOURS vérifier l'intégrité de tes données côté serveur avant de les stocker (sauf si, bien sûr, il n'y a aucun contrôle à faire, mais c'est excessivement rare). Sinon, un petit malin peut insérer des données corrompues dans ton système, ce qui peut aller jusqu'au piratage du serveur (coucou les SQL injections). C'est pour ça que je parle de "dev mal foutu".
votre avatar
Je pense que ce que @berbe cherche à expliquer ici, c'est que les problèmes de développement ne sont pas forcément une cause interne au développeur.

Oui, il y a les pratiques du développement sécurisées à mettre en oeuvre, dans la théorie.

Dans la pratique, quand t'as un projet qui se pointe en mode urgent, sans specs, à livrer pour hier et avec 3 pesos de budget, ben tu fais avec la pression qu'on t'inflige. C'est ensuite de la gouvernance avec une chaîne de responsabilité.
votre avatar
Certes, mais un dev mal foutu reste un dev mal foutu, quelle qu'en soit la raison.
L'idée n'est pas de dire que si un dev est mal fait, c'est forcément de la faute du développeur. Il y a les faits d'un côté et les causes de l'autre. Pas besoin de rajouter du jugement en plus. 😉