Vad är XSS (cross-site scripting) och hur fungerar det?
XSS eller cross site scripting skiljer sig lite från andra IT-attacker då det riktar in sig på en hemsidas användare, istället för hemsidan i sig. Poängen med XSS är att hackaren vill få sin kod att köras i användarnas webbläsare och på så sätt komma åt deras uppgifter. Om hemsidan är dåligt byggd, har säkerhetsbrister eller inte är krypterad så har hemsidan misslyckats med att isolera sin information, i så fall kan hackaren placera sin kod på hemsidan för att komma åt användarna.
XSS handlar om att “injicera” skadlig kod in i en annars vanlig hemsida och komma åt hemsidans användare. Det kallas för “javascript injection” och namnet kommet från att det ursprungligen var javakod som injicerades i webbplatserna. Nu används dock många fler olika typer av programmeringsspråk.
Vad är cross-site scripting?
En hackare injicerar en skadlig kod i en annars säker hemsida. Det är ett slags skadligt skript som hamnar i hemsidans innehåll. Det skickas sedan till användarens webbläsare när denne går in på hemsidan och eftersom hen inte vet att den är skadlig så körs skripten automatiskt. Det gör i sin tur att skripten kommer åt allting som har sparats på den hemsidan, som sessiontokens, cookies eller annan känslig information. XSS-attacker kan också användas för att få tag på inloggningsuppgifter, skriva om innehållet på hemsidan eller skapa problem inom sociala nätverk. Det är främst användarna som hackare riktar in sig på här.
Hur fungerar en XSS-attack?
Vid XSS-attacker manipulerar hackaren hemsidan så att den skickar skadliga skripts till användarna. Genom att lägga till sin skadliga kod på den riktiga hemsidan så körs koden varje gång som webbsidan t.ex. laddas. Eftersom koden körs på användarens webbplats är det möjligt för hackaren att komma åt känsliga uppgifter. Koden kan infogas på olika sätt, vilket gör det väldigt svårt att veta om ifall du har utsatts för en XSS-attack eller inte. Det kan vara så att de skadliga innehållet i själva verket inte finns på hemsidan, utan bara temporärt finns i en del av hemsidan när attacken sker. Attacken kan därför ske obemärkt i många fall.
Skriptkörningen kan exempelvis triggas av att användaren laddar om sidan, håller musen över eventuella hyperlänkar eller trycker på något element på hemsidan.
Typer av XSS-attacker
Här tar vi en titt på de vanligaste sorternas XSS-attacker och hur de fungerar.
Reflekterad XSS
Reflekterad XSS är den vanligaste typen av XSS-attack. Attacken inleds när en användare skickar en förfrågan till en webbplats server. Den skadliga skripten som hackaren injiceras kommer att dyka upp på offrets skärm och kan visas som ett felmeddelande, eller till och med som sökresultat. Offret uppmanas att trycka på en symbol eller länk och om personen gör det kommer den infekterade koden att köras. Detta händer eftersom offrets webbläsare precis har lurats att tro att ovanstående kod kom från en säker server. All information som skrivs in på webbplatsen kommer att skickas till hackaren.
Lagrad XSS
Lagrad XSS är vad som händer när en applikation eller webbplats har skadlig kod som har infekterat alla dess HTTP-svar. Till exempel kan den skadliga koden lagras i webbplatsens kommentarsfält, där den sedan kommer att utlösas när den klickas på. Faran med Lagrad XSS är att hackaren redan har lagt ut den skadliga koden och behöver inte locka ett potentiellt offer att följa en länk. Allt hackaren behöver göra är att lägga ut koden och vänta.
DOM-baserad XSS
DOM står för “Document Object Model” och det skapas så fort någon öppnar en webbsida. DOM är det som tillåter en användare att få åtkomst till allt innehåll på en sida utan att behöva interagera med servern. Det är därför DOM XSS fokuserar på offrets webbläsare. Vad gäller Reflekterad och Lagrad XSS är det möjligt att se om det finns tecken på fara i HTML-svarssidan. Det är inte möjligt med DOM XSS och därför är det svårare att veta om man blivit utsatt för en sådan attack. Det är omöjligt att se sårbarheten utan att gå in i detalj i webbplatsens kod.
Konsekvenserna av en XSS-attack
En XSS-attack kan leda till att hackaren får tillgång till användarens webbläsarhistorik och cookie-information, ändrar innehållet på en sida eller får tillgång till en användares personliga uppgifter. Genom att ändra innehållet på sidan kan hackaren skicka användaren till en snarlik sida och be denne att fylla i sina kontaktuppgifter. Om användaren gör det kommer hackaren både åt dennes inloggningsuppgifter och kan använda dem för att komma åt mer information på användarens enhet. Det kan leda till identitetsstölder, IP-spoofing och liknande. Det är också möjligt att utnyttja en sårbarhet i webbläsaren för att komma åt användarens enhet och infektera den med skadlig programvara, som trojanvirus. Med XSS-attacker kan hackaren alltså komma åt väldigt mycket av offrets information.
Exempel på XSS- attacker
Det finns olika sätt en hackare kan gå tillväga för att utföra XSS-attacker. Exempelvis kan hackaren lägga in HTML-taggar i en webbplats kommentarsfält om webbplatsen har en sårbarhet som gör det möjligt. HTML-taggarna ligger kvar på sidan permanent och inkluderas i källkoden varje gång sidan öppnas. Eftersom taggarna ligger i källkoden aktiveras de varje gång som sidan öppnas. Offret behöver alltså inte trycka på något för att bli drabbad. Taggen aktiverar en skriptfil som finns på en annan webbplats och som stjäl användarnas session-cookies. Om hackaren får tag på session-cookies kan den få tillgång till användarens konto och därifrån få tillgång till privat och personlig information. Kommer hackaren åt din enhet är det även möjligt att lägga in skadliga programvaror som keyloggers och spionprogram.
Det är ett exempel på en lagrad attack då användaren faller offer direkt när användarens går in på hemsidan. Hade det varit en reflekterad attack hade skriptet istället aktiverats när användaren tryckt på en länk. En lagrad attack har därför en större räckvidd och det är svårt för användarna att undvika attacken eftersom att den sätter igång direkt när de går in på hemsidan. Som tur är är lagrade attacker inte särskilt vanliga, eftersom det är sällan som en webbplats har sådana sårbarheter som gör det möjligt att permanent bädda in skript.
Hur förhindrar jag XSS-attacker och skyddar mig?
Så, vad kan du göra för att undvika att falla offer för XSS-attacker? Här kommer en rad tips som är bra att lägga på minnet.
Saker du som användare kan göra
Tyvärr är det svårt att försvara sig mot XSS-attacker då koden riktar in sig mot webbplatserna du besöker snarare än din enhet. Det viktigaste är att känna till hur IT-attacker fungerar och skaffa dig kunskap om vad du kan göra för att undvika att falla offer för dem. Att lära sig att känna igen tecknen innan du oavsiktligt aktiverar en skadlig kod är en prioritet för att vara helt skyddad på nätet. Här är några bra tips för att undvika att falla offer för cyberattacker.
- Gör det till en vana att hålla ett öga på URL:en. Om något verkar ovanligt eller konstigt så är det bra att vara försiktig med vad du gör på sidan och vilken information du lämnar. Det är bäst att undvika sidan helt.
- För den som är mer tekniskt kunnig är det möjligt att ta en närmare titt på koden på varje webbsida du öppnar, för att kontrollera om det finns något skript som inte hör hemma där.
- Chrome, Safari, Internet Explorer och de flesta robusta säkra webbläsare har inbyggda säkerhetsfunktioner som hjälper till att upptäcka och blockera XSS-attacker. Äldre webbläsare kanske inte har den här funktionen.
- NordVPN:s Threat Protection Pro-funktion ger ett extra lager av digital säkerhet. Vi uppdaterar kontinuerligt vår lista över skadliga webbplatser och kommer att stoppa dig från att gå in på en sådan.
Saker som hemsidans ägare/skapare kan göra
De som verkligen kan göra skillnad här är de som sköter hemsidan, eftersom det är sårbarheter i hemsidan som gör så att du blir drabbad av den skadliga koden. Några exempel på saker som ägaren/skaparen kan göra är att:
- Se till att alltid söka igenom applikationen och leta efter sårbarheter. Upptäcks något bör det åtgärdas direkt.
- Alltid hålla sina servrar och webbplatser uppdaterade för att förhindra att en sårbarhet upptäcks och utnyttjas.
- Granska alltid koden innan den läggs upp på hemsidan. Många sårbarheter kan upptäckas redan där. Det är även bra att göra en kodgranskning flera gånger när hemsidan är uppe också.
- Utvecklaren måste hålla isär innehåll som tillhör hemsidan och innehåll som kommer någon annanstans ifrån, t.ex. innehåll som en användare skriver in i ett fält som ett kommentarsfält eller sökfält. Är det kod som skrivs in bör utvecklaren försäkra sig om att den aldrig kan tolkas som kod av applikationen.