Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Onderzoekers kunnen met man-in-the-middle pincodes bij Visa-betalingen omzeilen

Zwitserse beveiligingsonderzoekers hebben een manier gevonden om de pincode van Visa-kaarten te omzeilen. Daarvoor gebruikten ze een zelfgemaakte app en moesten ze een betaling via een telefoon uitvoeren.

Het onderzoek werd uitgevoerd door wetenschappers van het Zwitserse Federale Instituut voor Technologie. Ze ontdekten een methode om een man-in-the-middle-aanval uit te voeren op betalingen via Visa-kaarten die met een telefoon worden uitgevoerd. De onderzoekers gebruikten daarvoor een zelfgebouwde app die een kaart emuleert op een smartphone. Ook is het nodig een tweede telefoon te hebben die een betaalterminal emuleert.

De onderzoekers gebruiken de betaalterminalemulator om een Visa-kaart te scannen. Op de eerste telefoon kunnen de onderzoekers de kaart authenticeren zonder de pincode op te geven. Vervolgens wordt het signaal daarvan naar de tweede telefoon gestuurd, waarmee in een winkel kan worden betaald. Zo kunnen ze grote betalingen doen in bijvoorbeeld een winkel zonder de code op te geven.

De kwetsbaarheid zit in het EMV-protocol dat door verschillende betaalproviders wordt ondersteund, in combinatie met Visa's eigen protocol voor contactloze betalingen. Specifiek zit de kwetsbaarheid in de manier waarop een kaart geauthenticeerd wordt tijdens een transactie. Volgens de onderzoekers kan de methode waarmee een kaart tijdens een transactie wordt geverifieerd, worden aangepast. Voor het aanpassen wordt verder geen authenticatie gevraagd en het wordt niet met cryptografie geverifieerd. Het verifiëren gebeurt normaal gesproken met een Card Transaction Qualifier. De onderzoekers wisten die aan te passen. Daardoor konden ze een betaalterminal laten denken dat een pincode niet nodig was. De wetenschappers vonden de kwetsbaarheid door die met Tamarin te analyseren en vervolgens zelf een app te bouwen.

De onderzoekers zeggen dat de app die ze hebben gebouwd, op iedere Android-telefoon werkt. Ze hebben daar geen speciale rootpermissies voor nodig. De onderzoekers hebben niet alleen een proof-of-concept laten zien, maar ook in verschillende echte winkels een test gedaan. Na de ontdekking zouden de onderzoekers Visa hebben benaderd met mogelijke oplossingen. Daarvoor is het niet nodig het EMV-protocol aan te passen of nieuwe kaarten uit te sturen, maar Visa moet wel bestaande terminals via een software-update beveiligen. In het onderzoek staat niet of het bedrijf dat inmiddels heeft gedaan.

Door Tijs Hofmans

Redacteur privacy & security

31-08-2020 • 10:21

44 Linkedin

Submitter: eheijnen

Reacties (44)

Wijzig sortering
Er werd gebruikgemaakt van een aangepaste versie van de Tamarin-app.
Tamarin is een programma waarin stellingen over (cryptografische) protocollen in het "symbolic model" bewezen kunnen worden. Het is een bewijsassistent/model checker; geen app op een telefoon om deze aanval mee uit te voeren. De kwetsbaarheid is in het protocol gevonden door middel van Tamarin, de aanval hebben ze met andere (zo te zien eigengemaakte) software gedaan.

Het vinden van kwetsbaarheden met Tamarin doe je grofweg door een specificatie van het protocol uit te programmeren in de taal van Tamarin, en vervolgens stellingen op te schrijven die de model checker dan probeert te bewijzen. Zo'n stelling kan dus bijvoorbeeld zijn: ik moet altijd een pincode invoeren als de terminal erom vraagt. Tamarin slaagde er dus in dat te falsificeren, en geeft dan een tegenvoorbeeld. Dat tegenvoorbeeld leidt tot het experiment met de androidtelefoons.

[Reactie gewijzigd door theguyofdoom op 31 augustus 2020 10:37]

Thanks, ik was denk ik in de war door de zin 'Our model is written in Tamarin' maar je hebt gelijk, ik pas de tekst erop aan.
Daarvoor gebruikten ze een zelfgemaakte app en moesten ze een betaling via een telefoon uitvoeren.
Dat kan ik ook allang, ook geen pin nodig. ‘Apple Pay’ :+

[Reactie gewijzigd door slijkie op 31 augustus 2020 10:26]

Het zal wel iets subtieler liggen.

Er wordt bij cc’s vaak onderscheid gemaakt tussen ‘card present’ en ‘card not present’.

Je kunt in principe namelijk met alleen de getalletjes van een cc iets kopen en daar vind veel fraude mee plaats. Bij grote bedragen moet daarom ‘card present’ zijn. Of in ieder geval iets meer dan alleen de getallen (serienummer + vervaldatum en/of ccv)

Er zijn allerlei methoden om te verifiëren dat iemand ‘meer’ dan alleen de onversleutelde getallen van een kaart heeft.

ApplePay bewijst bijvoorbeeld dat jij een biometrisch gegeven hebt dat gebruikt is om een token te versleutelen dat ooit aan de kaarthouder is toevertrouwd.

Wat deze hack doet als ik het goed begrijp is omzeilen dat er een extra bevestiging wordt gevraagd, het lijkt erop dat een ‘card present’-achtige situatie kan worden gecreëerd..

[Reactie gewijzigd door Keypunchie op 31 augustus 2020 10:50]

Volgens mij staat het er toch duidelijk
Het verifiëren gebeurt normaal gesproken met een Card Transaction Qualifier. De onderzoekers wisten die aan te passen. Daardoor konden ze een betaalterminal laten denken dat een pincode niet nodig was.
Dus de kaart is wel 'present', hij meldt schijnbaar (door de hack die de CTQ aanpast) aan de terminal dat er geen pincode hoeft te worden gevraagd. Dat zou dus op te lossen moeten zijn door signing op o.a. de CTQ toe te passen, maar die wordt of niet toegepast of niet door de terminal gecontroleerd.
Nu kunnen anderen dat ook met jouw CC :+
Ja ook alsbje pin zou moeten invoeren?
Nee, maar hierboven staat ook niet dat het ‘niet’ van dr betaalrekening afgaat. :9
Het gaat niet om betalen zonder dat het van een rekening af gaat, het gaat om betalen zonder authenticatie, d.w.z. dat je zonder toestemming kan betalen met de pas van iemand anders (als je die hebt weten te scannen).

Zoals slijkie uiteraard ook weet, is bij Apple Pay de authenticatie met PIN vervangen door authenticatie met FaceID of TouchID.
Daardoor konden ze een betaalterminal laten denken dat een pincode niet nodig was
Dat zeg ik toch ook. @slijkie zegt dat hij dat al kan via Apple Pay, maar niet wanneer hij zich MOET authentiseren.
Al blijtk dat dus bijna nooit te hoeven, maar daarmee omzeilt hij niet de authenticatie process.
Vertel eens hoe dat werkt dan? Of bedoel je met Apple Watch, daar is de authenticatie het feit dat de watch om je pols zit en vervolgens geauthencieerd is via je toegangscode of iPhone unlock.

[Reactie gewijzigd door Herko_ter_Horst op 31 augustus 2020 10:51]

Tweemaal snel op mijn Watch klikken en ik kan gewoon betalen.

Dat je eerder de boel gekoppeld moet hebben via je bank is logisch.

Maar daardoor kan ik zonder Touch of FaceID gewoon betalen.
Volgens mij moet je op de Apple Watch authenticeren zodra (of nadat) het horloge geen hartslag meer detecteert (zodra het van de pols af is). Als je dat dus eenmalig doet en nooit je horloge afdoet kun je inderdaad altijd betalen.
Om je Watch te unlocken moet je eerst een pincode invoeren, dat is je authenticatie
Wanneer je je watch om doet moet je vast een code ingeven, zolang je deze draagt ben je geauthentificeerd.

Mogelijks moet je onder een betaald bedrag (< €25/€50) inderdaad ook niet authorizeren met je iPhone.
Mogelijks moet je onder een betaald bedrag (< €25/€50) inderdaad ook niet authorizeren met je iPhone.
Nee, dat moet altijd.
Dit werkt alleen als je de PIN code hebt ingevuld op je Apple Watch als je deze om doet. Zodra de Watch van je pols af gaat moet je de PIN code weer invullen. Zonder die PIN code kan je geen betalingen doen met de Watch.
Maar als jij je Apple watch af doet kun je pas weer betalen als je:
- je passcode van je watch invult
- je iPhone ontgrendeld met touch of faceID

Je kunt dus pas gebruik maken van de betaalfunctionaliteit als je geautoriseerd bent.
Tweemaal snel op mijn Watch klikken en ik kan gewoon betalen.

Dat je eerder de boel gekoppeld moet hebben via je bank is logisch.

Maar daardoor kan ik zonder Touch of FaceID gewoon betalen.
Dat je Watch aan je telefoon moet gekoppeld worden, anders werkt het niet!
Anders gaat een horlogedief met je horloge wegrennen... van je vingerafdruk kan hij namaken (CSI praktijk) en ondertussen voert hij de betalingen uit... Als Apple dat niet daaraan had gedacht zou ik het heel erg dom vinden. :P
En is Mastercard vulnerable? Of alleen Visa? Aangezien het EMV-protocol door meerdere betaalproviders wordt ondersteund. Ben ik toch wel benieuwd naar.
En is Mastercard vulnerable? Of alleen Visa? Aangezien het EMV-protocol door meerdere betaalproviders wordt ondersteund.
De term 'EMV-protocol' is een beetje misleidend. Het doet vermoeden dat het 1 protocol is, dit is in praktijk niet zo. De EMV standaard is dat er eigenlijk helemaal geen standaard is.

Elk type kaart heeft gewoon een compleet eigen protocol, en de 'EMV standaard' is niet meer dan 7 totaal verschillende protocollen bij elkaar gepropt in 1 'standaard'. Zodra je contact hebt met de kaart moet je opvragen welk type kaart het is en afhankelijk daarvan een protocol gebruiken. Het VISA en MasterCard protocol staan dus compleet los van elkaar.
Summary: Our analysis verifies that transactions with CDA-capable Mastercard cards that support online PIN verification are secure. Fortunately, this is the most common kind of Mastercard cards that banks are currently issuing. In contrast, critical flaws were encountered in common, currently used configurations of Visa cards. These flaws can be turned into practical attacks, which we describe in the next section.
Het lijkt echt in Visa's implementatie te zitten.
Ja, ik las iets te snel het nieuwsbericht. Dat het icm met het Visa protocol voor contactloze betalingen dus vulnerable is. Maar jouw toevoeging geeft dus eigenlijk grotendeels weer waarom we hier meer Mastercards zien dan Visa's. Ze hebben de beveiliging wat beter op orde.

Maar persoonlijk heb ik een cc altijd al een fragiel stukje gevonden. Het gaat vaak om hoge kredieten icm met wat cijfers wat voornamelijk ook online te gebruiken is. Als je het vergelijkt met de pinpas zoals wij die kennen is het een aantrekkingsbron voor criminelen.
Visa en Mastercard kan prima een debetkaart zijn zonder vage (hoge) kredietlimiet. Mijn Deense en Spaanse bankpassen zijn beide Visa, maar met geen van beide kan ik meer uitgeven dan wat mijn rekeningsaldo toelaat (Visa Debit).

Mijn Belgische pas is een Maestro/Bancontact pas, wat per definitie een Debit toepassing is, en mijn Transferwise kaart is een Mastercard Debit, die ook enkel het saldo van mijn verschillende balansen (met verschillende currencies) kan "uitgeven", daarna is het uit met de pret.

Klopt verder hoor, dat "krediet" kaarten (CCs) in de bredere zin inderdaad niet veel zin heeft, als je het geld niet hebt dan moet je het ook niet uitgeven, als dat toch nodig is (auto is kapot en zonder auto geen werk, bvb) dan kan je daarvoor uiteraard spaargeld of een lening aanspreken, zo'n kredietlijn brengt vaak (niet altijd) alleen maar meer gezeik met zich mee.

*Edit: kleine sidenote, mijn Spaanse pas heeft ook Visa Credit functionaliteit, maar daar heb ik een harde limiet van €450 laten opzetten voor geval van nood, maar eigenlijk nog nooit gebruikt.

[Reactie gewijzigd door bramvandeperre op 31 augustus 2020 13:19]

Het originele EMV protocol is gezamenlijk door Europay MasterCard en Visa gedefinieerd. Dit was echter alleen voor contact betalingen. Dus waarbij je de pas in het automaat steekt.

Voor contactless hebben al de partijen op eigen houtje wat bedacht. En daarom werken die ook allemaal anders.
Dit vraagt een medewerkende - of erg onoplettende - winkelier, correct? Want de NFC antenne van een telefoon wordt bij de kaartlezer gehouden, niet de (gestolen) Visa card.

Als het dan ook nog zo real time moet als de video toont - dus de Visa card moet op / vlak voor dat moment bij de NFC antenne van de andere telefoon gehouden worden - dan laat het ook niet echt ruimte voor vingervlugheid / een onopvallende move.

Kortom: fijn als 't voor de zekerheid gedicht wordt, maar een acceptant heeft al snel mogelijkheden tot onterechte transacties. (Denk bijv. aan alle hotels die met je CC-nummer je een no show charge in rekening kunnen brengen.) Misbruik daarvan is op een andere manier afgedekt dan via techniek op een Point Of Sale.
Dit vraagt een medewerkende - of erg onoplettende - winkelier, correct?
Nee, er zijn veel mensen die betalen met Apple Pay of een andere manier van betalen met nfc op je telefoon. Omdat je 2 telefoons gebruikt hoeft de telefoon waar je de kaart tegenaan houdt niet naast de telefoon die de betaling doet liggen. Dat kan letterlijk aan de andere kant van de wereld zijn. Dus als je op een of andere manier toegang hebt tot de kaart kun je dus vanalles kopen met de andere kaart
Als ondernemer wil je waarschijnlijk weten of je betaaldiensten hiervoor gebruikt kunnen worden met mogelijk omzetverlies en een slechte reputatie als gevolg van nalatigheid door de banken en betaalleveranciers. Het probleem vraagt dan om een ondernemer die weet of zijn betaaldiensten deze visa betalingen ondersteunen en of (en anders wanneer) de leverancier updates heeft. En zolang die updates er niet zijn wil de ondernemer waarschijnlijk weten hoe zijn bank hem bescherming geeft tegen betalingen die achteraf gezien niet gecontroleerd waren via zijn bataalapparaat.

[Reactie gewijzigd door kodak op 31 augustus 2020 11:13]

Nee, de moraal is juist: Laat je kaart ergens in een kluis ligt waar niemand erbij kan of laat contactloos betalen op je kaart uitschakelen.

[Reactie gewijzigd door _--[]--__ op 31 augustus 2020 10:36]

Maar die telefoons zijn alleen man-in-the-middle voor de betaling met de kaart. Dit zegt dus niet dat betalen met de telefoon onveilig is. Dit zegt dat draadloos betalen met kaart en telefoon onveilig is.

Dus pasje maar weer gewoon in het apparaat steken, pincode invoeren en daar weer in een anti-NFC hoesje bewaren is het veiligst.
Als je zo huiverig bent, kan je ook draadloos betalen helemaal uitschakelen. Dan heb je ook geen anti-NFC hoesje nodig.
De telefoon hier is niet van de eigenaar van de kaart.
En de Rabobank heeft net al hun klanten van Mastercard naar Visa omgezet omdat het veiliger zou zijn 8)7
Zonder te vragen overigens....
Uh? Ze bieden gewoon beide aan een je kan nog steeds voor een MasterCard kiezen: https://www.rabobank.nl/particulieren/betalen/creditcards/

Het "veiliger" slaat op de kaarten in het algemeen, niet specifiek of je nu een nieuwe VISA of MasterCard hebt ontvangen.
Sorry maar iedereen krijgt ongevraagd een Visa Creditkaart thuisgestuurd als ze nu Mastercard hebben.... Ik ook... Heb hem een maand gebruikt.. Ongeveer 75% van de betalingen mislukken gewoon, en de klantenservice had geen idee hoe het kwam. Dus weer terug naar Mastercard gegaan en het werkt gewoon.
Wat ik hier uithaal, is dat deze smart card interacties bij VISA niet gesigned worden, en dus open staan voor manipulatie.

In de basis is dit gewoon een relay attack: telefoon A draait een HCE (Host Card Emulation) app die de terminal uitleest en de APDU's (de raw bytes) naar Telefoon B stuurt, waarna telefoon B op zijn beurt een terminal emuleert door de APDU's die hij van Telefoon A krijgt te relayen naar de kaart. Het antwoord van de kaart wordt dan weer in de andere richting doorgesluisd, waarna dit zich blijft herhalen tot de transactie afgelopen is.
Een relay aanval werkt in de basis met elke smart card; bankkaarten, kredietkaarten, OV pasje, noem maar op. Valt niet te vermijden; voor zover ik weet is dit compleet transparant voor zowel de terminal als de kaart.

De twist is hier dat de relay-app de APDU's dusdanig manipuleert om de authenticatiemanier te veranderen, zodat er geen pin code ingegeven dient te worden. Dit kan je wél vermijden door controles in te bouwen: signing van de APDU's/transacties met de in de kaart ingebouwde sleutels. Hieruit blijkt al snel dat de APDU's gemanipuleerd zijn, en dat de transactie afgebroken dient te worden. Maar blijkbaar wordt hier geen signing uitgevoerd en kan iedereen zomaar de flow manipuleren... erg slordig.
Even wat betreft...
Visa moet wel bestaande terminals via een software-update beveiligen. In het onderzoek staat niet of het bedrijf dat inmiddels heeft gedaan
Dit kan Visa niet doen. Visa is namelijk niet de eigenaar van alle betaalautomaten. Zij kunnen wel hun specificaties aanpassen en iedereen dwingen te upgrade. Bij grote updates ben je dan een paar jaar verder...
Ik heb ook een paar jaar geleden aan dit soort betaalsystemen gewerkt. Daar komen natuurlijk heel veel strenge security- en cryptography-eisen bij kijken, en het mooie is dat alles zo is bedacht dat zelfs als er een bug zit in de terminalsoftware of in software van servers in de ketting tussen het pasje en de bank, het heel moeilijk is om het lek te krijgen.
Het verifiëren gebeurt normaal gesproken met een Card Transaction Qualifier. De onderzoekers wisten die aan te passen. Daardoor konden ze een betaalterminal laten denken dat een pincode niet nodig was.
Maar dat is niet voldoende om te verklaren hoe ze hier een betaling daadwerkelijk konden uitvoeren zonder pincode in te voeren.

De terminal kan wel denken dat er geen pincode nodig is, maar dat betekent niet dat het achterliggende systeem van Visa het ook zomaar accepteert. Er moet dus meer aan de hand zijn dan alleen maar het feit dat de terminal niet om een pincode vraagt. Je kunt de terminal voor de gek houden, maar veel ernstiger is dat je zelfs blijkbaar Visa's backend systeem voor de gek kunt houden.

Als Visa die bug in hun backend systeem oplost, dan kan de terminal nog wel voor de gek gehouden worden, maar dan zal een betaling zonder pincode ook niet meer lukken.
Als ik het goed gelezen heb, doen ze het volgende:
De terminal geeft aan dat er een betaling moet verricht worden van X euro en dat de pincode gevalideerd moet worden.

De aanvallers houden de "kaart"-telefoon bij de betaalautomaat. Deze stuurt het signaal door naar de "betaalautomaat"-telefoon. In 1 van deze telefoons wordt de aanvraag naar de kaart gewijzigd. Er wordt nu aangegeven dat een betaling van X euro moet verricht worden en dat de pincode niet gevalideerd moet worden.

De echte kaart ontvangt deze message en stuurt een bevestiging terug waarin staat dat de PIN niet gevalideerd is. De apps ertussen passen deze aan en zeggen tegen de echte terminal dat de check wel degelijk gebeurd is.

Meer detail staat op pagina 10 en 11 van het gelinkte rapport (kopje "VI . Attack and defense")
Ok, maar dan nog vind ik het vreemd dat de terminal en kaart los van het backend systeem kunnen besluiten de pincode wel of niet te valideren, of bepalen dat dat wel of niet nodig is.

Je zou zeggen dat het backend systeem ook moet weten of pincodevalidatie nodig is voor een bepaalde kaart/betaling, en weigert als het anders is dan verwacht. Als de backend zomaar vertrouwt op de kaart en/of terminal om te beslissen of pincode validatie nodig is, dan is dat ook een zwakte in het backend systeem.
Helemaal akkoord. Dat lijkt me een beetje het equivalent van javascript validaties op een moderne website. Allemaal mooi en wel, maar doe het toch nog maar eens over op de backend.
Als ik het goed lees werkt dit dus ook alleen bij offline transacties. Dus de transactie wordt niet bij de host geverifeerd ten tijde van de transactie. Pas als de offline transactie later doorgegeven wordt aan de host, komen ze erachter maar dan is de kaarthouder natuurlijk al lang weg. In Nederland zijn de meeste terminals "online" only en dan werkt deze aanval dus niet.

Uit de paper:
Our symbolic analysis also reveals that, in an offline contactless transaction with a Visa or an old Mastercard card, the card does not authenticate to the terminal the Application Cryptogram (AC), which is a card-produced cryptographic proof of the transaction that the terminal cannot verify (only the card issuer can). This enables criminals to trick the terminal into accepting an unauthentic offline transaction. Later on, when the acquirer submits the transaction data as part of the clearing record, the issuing bank will detect the wrong cryptogram, but the criminal is already long gone with the goods. We did not test this attack on actual terminals for ethical reasons as this would defraud the merchant.


edit:

Ooops, het bovenstaande gaat over een tweede zwakte die dus alleen werkt met offline transacties.

De hack waar het hoofdzakelijk om gaat is het "spoofen" van de "card verification method (CVM)". Met contactloze betalingen via je bank app op een telefoon kan een PIN-code namelijk ingevoerd worden op de telefoon zelf of i.p.v. een PIN-code kan ook een vingerafdruk of FaceID gebruikt worden om te betaling te autoriseren (Consumer Device CVM (CD-CVM)). Je hoeft dan niet meer een PIN-code op de betaalterminal zelf meer in te voeren.

Wat er bij deze hack gebeurd is dat de betaalterminal wijsgemaakt wordt dat de betaling geautoriseerd is via ConsumerDevice-CVM zodat de betaalterminal niet meer om een PIN-code vraagt. De normale bankkaart ziet er dus voor de betaalterminal uit als een mobiele betaal app waar je de betaling geautoriseerd hebt met een PIN-code op de telefoon zelf of een vingerafdruk/FaceID. Hierbij is de host dus blijkbaar niet bij betrokken want ConsumerDevice-CVM is een offline kaart verificatie methode.

[Reactie gewijzigd door robert2098 op 3 september 2020 08:14]

Op dit item kan niet meer gereageerd worden.


Apple iPhone SE (2020) Microsoft Xbox Series X LG CX Google Pixel 4a CES 2020 Samsung Galaxy S20 4G Sony PlayStation 5 Nintendo Switch Lite

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2020 Hosting door True