Faran med QR-koder
Att skanna QR-koder för autentisering tillåter användare att logga in på webbsidor och applikationer utan behovet att komma ihåg lösenord. QR-koder förenklar processen för inloggning men även för företag som vill annonsera för sina produkter. Genom att placera en QR-kod på exempelvis ett flingpaket gör att konsumenten snabbt och effektivt dirigeras till företagets hemsida för annonsering för andra produkter. Den snabba autentiseringen och länkningen till webbsidor bidrar till en ökad risk för användare då det kan vara svårt att veta om den skannade QR-koden faktiskt leder till en auktoriserad hemsida.
Bakgrund
QR-koder utvecklades av ett japanskt företag 1994 som en vidareutveckling av EAN-koden för användning inom bilindustrin i Japan. Koderna fick snabbt fäste utanför bilindustrin på grund av den snabba läsbarheten och större minneskapaciteten jämfört med vanliga EAN-koder.
Som alla nya och hjälpsamma produkter på marknaden, användes QR-koder för att öka försäljningen för företag. QR-koder har senare blivit antagen för flera olika ändamål, exempelvis Swish-koder och bankinloggningar. På grund av dess breda spridning har QR-koder även fått IT-brottslingars uppmärksamhet och genom attacker så som QRLJacking och fejkade QR-koder har dessa kunnat utnyttjats.
Angreppsvektorer
Det finns två huvudsakliga attackvektorer vid användning av QR-koder och dessa kommer att diskuteras i detalj i nedanstående avsnitt.
QRLJacking
QRLJacking är när en applikation eller hemsida använder QR-koder som ett engångslösenord för inloggning. För att utföra en QRLJacking attack behöver du endast två saker: ett skript som uppdaterar en QR-kod samt en välskriven phishingsida. Attacken modus operandi är som sådan:
- Angriparen initierar en QR-session från en legitim hemsida och klonar QR-koden och lägger till på sin phishingsida
- Angriparen lurar sitt offer att gå in på phishingsidan
- Offret skannar då QR-koden med sin telefon
- När autentiseringen är färdig har då angriparen full kontroll över offrets konto
OWASP har tagit fram en modul för att förenkla processen av QRLJacking som heter QRLJacker och kan laddas ned från deras GitHub-sida [1]. Fram tills deras rapport var flera applikationer drabbade av sårbarheten där vissa har gjort förändringar. Några av applikationerna har inte åtgärdat sårbarheten och är således fortfarande exponerade för denna typ av attack.
Fejkade QR-koder
Till exempel, du är ute och går på en marknad och hittar en rolig produkt du vill köpa, men du har inga kontanter (som de flesta inte har idag), men företaget har satt upp en lapp med en QR-kod till Swish. Du litar fullständigt på att lappen tillhör företaget som du köper produkten av, men i det här fallet har en angripare satt dit en lapp över företagets lapp med ett snarlikt namn som gör att du inte reagerar på namnet i applikationen. Vilket gör att du tror att du betalar företaget och visar upp din slutförda betalning för försäljaren, men pengarna har gått till angriparen.
För att visa hur enkelt det är att skapa en QR-kod (samtidigt som jag hoppas på en extra inkomst) har jag skapat en QR-kod via Swish [2] som alla med ett Swish-konto kan betala till. Läsarna av bloggen får gärna testa för att undersöka om det fungerar 😉 (De personer som faktiskt använder länken och betalar kommer självklart få en kebab).
Slutsats och mitigeringsåtgärder
QR-koder kan användas i antagonistiska syften för att tillskansa sig ekonomiska medel eller få åtkomst till en användares konto. Det finns dock sätt för användare, individer och organisationer att skydda sig från denna typ av attacker beroende på vilken typ av angreppsvektor som används. Mitigeringsåtgärder för att minimera skadan och undvika att bli föremål för QRL-attacker kommer presenteras nedan.
Organisationer som använder QRL-koder för inloggning eller annan typ av autentisering/signering rekommenderas det att endast tillåta QR-koden för applikationen att genereras och autentiseras från samma externa IP-adress. Genom detta tillvägagångssätt tillåts QR-koden endast att genereras i användares webbläsare och den enhet som används som QR-läsare måste vara ansluten till samma nätverk som webbläsaren. Risken kvarstår men förminskas.
Som användare bör följande nedanstående råd för att undvika den andra typen av attacker (QRL spoofing):
- Undvik att använda QR-koder som betalning eller autentisering,
- Alternativt använd endast QR-koder som ett led i multifaktorsautentisering.
- Använd en QR-läsare som implementerar säkra egenskaper, detta gäller särskilt för Android-användare.
Referenser