Vad 3-D Secure och PCI DSS inte skyddar mot

För mer än två år sedan skrev jag om de här ständigt aktuella farbröderna från Cambridge och deras korta artikel om 3-D Secure: Verified by Visa and MasterCard SecureCode: Or, How Not to Design Authentication.

Farbröderna presenterade ett flertal grundläggande problem med 3-D Secure. En bekant till mig trillade dit på ett av dem för några veckor sedan vilket ledde till att en skurk kunde köpa elektronikprylar för 12 000 kr utan att spendera en enda (egen) krona.

Först, en lite utförligare förklaring av 3-D Secure.


Bakgrund
3-D Secure är det tekniska, gemensamma namnet för Visas och MasterCards respektive varumärken Verified by Visa samt MasterCard SecureCode. Det är säkerhetsåtgärden att du måste koppla ett ytterligare autentiseringssteg (i regel ett lösenord med tillhörande "hälsningsfras") till ditt betalkort och sedan ange detta i samband med att du köper något på kortet över internet.

Handlare motiveras (ges incitament) till att implementera detta genom att kortföretagen tar på sig risken vid bedrägerier. Alltså, om du som handlare säljer någonting och köpet senare bestrids av kortinnehavaren som bedrägligt så får du behålla pengarna; om du använder 3-D Secure och därmed kräver den extra autentiseringen av kortinnehavaren. Om du inte har säkerhetsåtgärden implementerad vid köp så får du ge snällt ge tillbaka pengarna, även fast varan är levererad. Vissa, större företag har medvetet tagit den här risken då de tror att det extra steget hindrar spontana köp och därför innebär större förluster än vad eventuella bedrägerier medför. CDON är ett exempel.

NB att det inte finns något i protokollet som begränsar autentiseringen av kortinnehavaren till lösenord. Kortutgivaren (banken) kan mycket väl använda SMS eller befintliga bankdosor för att styrka kortägarens identitet enligt 3-D Secure.

Gången är som följer: du fyller i alla dina kortuppgifter som vanligt vid köpet men innan det avslutas dirigeras du till kortutgivaren (din bank), ofta via en popup eller iframe. På bankens webbsida får du bevisa ditt ägarskap genom att ange ditt lösenord.

"Hälsningsfrasen" som nämnts ovan kallas formellt för personal assurance message (PAM). Det är ett kort, godtyckligt meddelande du anger på internetbanken i samband med att du väljer ett lösenord. När du, vid ett köp, blir ombedd att fylla i ditt lösenord i samband med Verified by Visa/MasterCard SecureCode visas ditt valda PAM-meddelande. Detta syftar till att försäkra dig om att det är banken du pratar med, det är alltså ett skydd mot phishing-liknande attacker. Tanken är att det bara är du och banken som vet PAM och lösenord, en form av ömsesidig autentisering.


Du ska alltså bara ge ditt lösenord på den sida som visar din PAM-hälsningsfras. I mitt fall, som bilden visar, ska jag dra öronen åt mig ifall hälsningsfrasen inte är "Dags att pröjsa grabben!". Det skulle nämligen betyda att det inte är SEB, min kortutgivare, som finns på andra sidan.

Det tänkte inte min gode vän på tyvärr.

(Ja, det är som sagt meningen att PAM ska vara en delad hemlighet mellan dig och banken. Man ska alltså inte publicera den på sin blogg på det här viset.)

Bedrägeriet
Följande hände: Liten, svensk webbshop på svenskt webbhotell säljer prydnadssaker. För att inte bli belastade med PCI DSS-kraven har man låtit en payment service provider (PSP) hantera alla kortbetalningar. Detta betyder att webbshopen aldrig hanterar någon kortinformation och alltså inte lyder under PCI DSS.

Vän placerar prydnadsföremål i varukorg och trycker på "Till kassan". Får en lista på valda varor presenterade samt en lista på betalningsalternativ. Trycker på "Kontokort". Ett formulär glider snyggt ned under kortalternativet och begär "det vanliga": namn, adress, kortnummer, utgångsdatum, CVV-kod och... Verified by Visa-lösenord. Med synapserna låsta på prydnadsföremålet fyller god vän i uppgifterna och trycker på "Köp".

Efter trycket på "Köp"-knappen dirigeras webbläsaren vidare till butikens PSP som visar upp ett formulär och begär "de vanliga" uppgifterna. Igen. "Vad faan...", tänkte god vän och fyllde i kortnummer o s v ännu en gång. Tryck på en "Nästa"-knapp ledde till ytterligare en omdirigering till en sida på bankens servrar som visar vännens hälsningsfras och begär Verified by Visa-lösenordet som plikttroget fylldes i. Ett par dagar senare levereras ett styck prydnadsföremål och allt är grannt.

Ytterligare några dagar senare har tre köp om 4 000 kr gjorts på en stor, svensk nätbutik för elektronikprodukter. Min vän har utsatts för ett kortbedrägeri. Polisen lade ner ärendet kort efter att polisanmälan gjorts.

Hur gick det till?
Enkelt, den lilla webbutikens webbsida hade hackats och dess kassa-sida (som visade vilka produkter som valts och vilka betalningsalternativ som fanns) hade fått några ytterligare rader kod ditlagda. Kod som (1) visar ett formulär som begär betalningsuppgifter inklusive Verified by Visa-lösenordet, (2) sparar, alternativt skickar uppgifterna någonstans och sedan (3) ansluter till det ordinarie köpförloppet hos PSP:n. Detta var anledningen till att god vän fick fylla i uppgifterna två gånger. En gång till bedragaren, en gång för att köpa sitt prydnadsföremål.

Tre saker är viktiga här:
  1. Att webbutiken använde en PSP hade ingen betydelse.
  2. PCI DSS, kortföretagens säkerhetsstandard för alla som hanterar kortnummer, var irrelevant.
  3. 3-D Secure, om det användes på den butik där god väns kort utnyttjades för att köpa tv-apparater, resulterade bara i att det är banken som får ersätta god vän, inte butiken.
Skuld och skydd
Vems fel var det här? Rent krasst så är det såklart webbutikens. Deras (hans/hennes förmodligen) bristande säkerhet ledde till att någon kunde jacka in sig i köpförloppet och stjäla god väns betalningsuppgifter. (Detta förstås med reservation för att det också kan vara webbhotellets fel.)

Är man ännu mer krass kan man säga att det är god väns fel. Hur kan man vara så jävla dum, och så vidare.


Problemet är dock knepigare än så, säkerhet ligger väldigt långt ner på både webbutikens och kundens lista över saker-jag-bryr-mig-om. Butiken vill sälja prydnadsföremål, kunden vill köpa prydnadsföremål, resten är av underordnad betydelse. Det känns oansvarigt att lägga ansvaret på endera av dem.

Jag kan dock inte säga att jag omdelbart ser hur någon annan än dessa två skulle kunna ha hindrat detta.

Är det här förutsättningarna för den nya tidens handel, e-handeln? Om du driver en vanlig butik nere på torget får du se till att låsa dörren på natten, om du driver en webbutik får du se till att inte få kassa-sidan hackad. Inget försäkringsbolag i världen skulle ju ersätta dig om du hade inbrott och det kom fram att du inte låser dörren.

Uppdatering: Joachim på SecureWorks skrev om 3-D Secure och problemet med phishing i höstas. Som alltid när det gäller "något du vet" så är phishing en attack att ta hänsyn till.

--
Stefan Pettersson



Kommentarer
Postat av: Christoffer

Något bankerna gärna också undanhåller sina kunder är ansvarsförflytten för ett eventuellt bedrägeri. Helt plötsligt handlar det om att kunden varit oaktsam med sitt lösenord och således får skylla sig själv. Ansvaret tillfaller alltså kunden att bevisa sin oskuld, istället för att banken får visa kundens skyldighet.



Subtil men viktig skillnad!

2012-05-17 @ 18:34:27
URL: http://blog.safeside.se
Postat av: Stefan Pettersson

(1) Banken tar på sig risken för bedrägliga köp om handlaren har 3DS aktiverat viz. banken ersätter kortinnehavaren och handlaren slipper.



Men du menar alltså att (2) banken ändå, om ett bedrägeri sker trots 3DS, inte ersätter kortinnehavaren för att den anses ha slarvat?



Det skulle ju i s f betyda att 3DS skyddar både handlare och banken men att kortinnehavaren hamnar i kläm. (Vilket i o f inte låter helt osannolikt.)



...eller menar du bara att ersättningen inte "kommer automatiskt" utan att kortinnehavaren får kämpa för det?

2012-05-18 @ 09:46:55
URL: http://highperformance.blogg.se/
Postat av: Stefan Pettersson

SEB verkar säga att det "beror på".



https://twitter.com/#!/popsak/status/203391877850992640

2012-05-18 @ 12:50:07
URL: http://highperformance.blogg.se/
Postat av: Bengan

Jag fick mitt kort kapat (3 köp i ryssland gjordes) i juni 2012. Swedbank vägrar nu ersätta pengarna som försvann eftersom jag har verified by visa. Dom menar att VBV är 100% säkert och att jag måste gett ut VBV koden frivilligt!

Svar: Hej Bengan,
det var ju minst sagt surt. Det är ju uppenbart att Swedbank har fel i så fall, exemplet ovan är som sagt bara ett exempel på hur man skulle kunna överlista VBV eller SecureCode. De är inte "100 % säkra", det är ett löjligt påstående.

Personen som omnämns i blogginlägget gjorde en polisanmälan och fick därefter pengarna tillbaka, även om det tog en stund. Det var dock inte Swedbank.

Jag vet inte var du borde vända dig men Konsumentverket är säkert en bra början ifall Swedbank inte ger med sig.

http://www.konsumentverket.se/Klaga/Anmala-till-Konsumentverket/

Läs på http://www.phantomwithdrawals.com/ också, siten är huvudsakligen för britter så det är inte säkert att lagarna som nämns där motsvarar de i Sverige. Däremot är teknologin och problemen samma. Du hittar säkert argument som kan användas mot banken.

Skicka det här inlägget till dem vettja.

Lycka till.
Stefan Pettersson

2012-09-18 @ 11:33:40
Postat av: Stefan Pettersson

...förresten kanske jag ska nämna att den här bloggen har flyttat till http://enligthps.wordpress.com/ sedan en tid tillbaka.

2012-09-18 @ 12:17:52
URL: http://enligthps.wordpress.com/

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback

HPS säkerhetsblogg


High Performance Systems logo


RSS 2.0