It-säkerhet enligt HPS

Stefan Pettersson på High Performance Systems skriver om säkerhet på svenska

Tagg: bank

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.

Annonser

Att mäta säkerhet på Internetdagarna

(Publicerad 2009-11-06)

I veckan höll .SE sin stora, årliga konferens Internetdagarna på Folkets hus i Stockholm. En workshop hölls under rubriken ”Measuring the health of the Internet”.

Jag var inbjuden för att delta i rundbords-diskussionen om att mäta säkerhet. Ett sjukt svårt ämne, tyvärr. Man kan säga att forskningen på området till stor del drivs av Dan Geer. En ärrad veteran som var med under Project Athena och (bland annat) är känd för att ha sparkats från @stake efter att ha kritiserat deras största kund; Microsoft. Rapporten som resulterade i avskedet, en intervju av Gary McGraw.

I en presentation berättar Geer om hur han konfronterades med en Chief Information Security Officer från en stor Wall Street-bank. CISO:n sade ”Är ni säkerhetsfolk så korkade att ni inte kan berätta för mig…”:

  • Hur säker jag är?
  • Om jag har det bättre i år än vid samma tid förra året?
  • Om jag spenderar rätt mängd pengar på säkerhet?
  • Hur jag har det i jämförelse med andra i branschen?

”Om jag hade varit på någon annan avdelning på banken, obligationsportföljer, aktiehandelsstrategier eller prissättning av derivat så hade jag kunnat besvara frågorna med fem decimalers nogrannhet.”

Det är svårt att mäta säkerhet. Alla är överens om att det vore väldigt bra att kunna göra det. Det skulle leda till att vi kan kontrollera hur mycket säkerhet vi får för en viss peng, det skulle vara möjligt att kontrollera om säkerheten har blivit bättre eller sämre efter en förändring, det skulle vara en barnlek att jämföra olika system och så vidare. Framförallt; om vi kan mäta så kan vi sätta en gräns för vilken säkerhet som är tillräckligt bra och hålla oss till den. Som (svenska) kunder alltid säger; vi vill inte ha fullständig säkerhet, vi är ingen bank, vi vill ha lagom.

Mätning kräver en mätenhet och en kvantitet av detta så frågan är egentligen; vilken mätenhet ska vi använda?

Tyvärr går det inte att jämföra med att räkna pengar, mäta avstånd, väga vikter eller andra, konkreta mätningar. Säkerhet är oerhört komplext och abstrakt, det finns ingen naturlig enhet.

Vi sänker ambitionsnivån lite. Vi fokuserar på mindre system, inte en hel Bank utan kanske en applikation.

Den populäraste enheten är utan tvekan ”antal upptäckta sårbarheter”. Den användes till exempel av Microsoft under 2007 för att påvisa att Internet Explorer var säkrare än Firefox (pdf). Microsofts rapport möttes av en del kritik

Tyvärr är enheten ”antal upptäckta sårbarheter” pinsamt ofullständig. Många frågor väcks genast:

  • Hur många letade?
  • Hur länge letade de?
  • Hur duktiga var de?
  • Hur stort är systemet?
  • Hur komplext är systemet?
  • Var slutar systemet?
  • Hur allvarliga var sårbarheterna?
  • Hur svåra är sårbarheterna att utnyttja?
  • Under hur lång tid gick de att utnyttja?
  • Kommer nya sårbarheter att introduceras? Vad gäller för dessa?

Om vi ska ta hänsyn till dessa och alla andra faktorer som spelar in kommer vi att få en rejält komplicerad enhet i knäet. Med all sannolikhet kommer vi aldrig komma till den punkten eftersom det i princip är omöjligt att bestämma relationen mellan alla dessa faktorer. Man skulle lugnt kunna säga att fåniga enheter i stil med newton-ampere-sekunder-per-kilogram-kvadratmeter skulle kännas fullständigt naturliga i jämförelse…

Vi backar och förenklar ytterligare en aning. Kan vi mäta enskilda säkerhetshål?

Om vi kan bryta ner en tänkt, komplicerad mätenhet i flera, enkla enheter som genom någon relation till varandra motsvarar den komplexa borde det underlätta.  Det är lätt att se hur felbedömningar är ovanligare om mätvärdet är simpelt och väldefinierat, kanske till och med diskret. Ju fler enkla mätvärden som kombineras desto mer exakt blir i sin tur kompositvärdet.

Ett exempel på detta är Common Vulnerability Scoring System (CVSS). CVSS används för att värdera hur allvarlig en sårbarhet är genom att göra en beräkning utifrån 14 värden fördelade i tre grupper. Varje värde är diskret, det finns mellan fyra och fem alternativ för varje.  Resultatet efter beräkningen av CVSS är ett värde mellan 0 och 10 och en ”CVSS-vektor” som beskriver varje delvärde.

Jag rundar av det här innan det svävar iväg för lå(n)gt. Området är svårt och, åtminstone jag, känner att det verkar rätt hopplöst. Lyckligtvis är det inte såna som jag som arbetar med det. Jag kommer att fortsätta på ämnet en uppföljande post.

Trevlig helg!