Command Palette

Search for a command to run...

Sanasto XSS (Cross-Site Scripting)

Mikä on XSS (Cross-Site Scripting)?

Cross-Site Scripting eli XSS on verkkosivustojen tietoturvavirhe, joka sallii hyökkääjien lisätä haitallisia skriptejä verkkosivuille. Useimmiten nämä skriptit on kirjoitettu JavaScriptillä.

Jos joku vierailee XSS:n vaikuttamalla sivulla, heidän selaimensa suorittaa hyökkääjän skriptin. Tämä voi johtaa varastettuihin evästeisiin, kaapattuihin istuntoihin tai toimiin, jotka suoritetaan ilman käyttäjän lupaa.

XSS, kuten SQL Injection, on säännöllisesti listattu OWASP Top 10:ssä yhtenä yleisimmistä web-sovellusten haavoittuvuuksista.

plexicus-xss-attack-ilustration

Miten XSS toimii?

XSS kohdistuu usein verkkosovelluksiin, jotka eivät tarkista ja puhdista käyttäjän syötettä oikein.

Esimerkiksi, jos kommenttikenttä sallii raaka-HTML:n tai JavaScriptin ilman suodatusta, hyökkääjä voisi lisätä koodin kuten tämä:

<script>alert('Hacked!');</script>

Kun uhrit katsovat sivua, haitallinen koodi suoritetaan heidän selaimessaan.

Miksi XSS on tärkeä kyberturvallisuudessa

XSS voi johtaa suurempaan tietomurtoon:

  • Tilin kaappaus (istuntokeksien varastaminen käyttäjien esittämiseksi)
  • Tietovarkaus (lomaketietojen, kuten salasanojen tai luottokorttien, kaappaaminen)
  • Tietojenkalasteluhyökkäykset (väärennettyjen kirjautumislomakkeiden syöttäminen)
  • Haittaohjelmien toimitus (käyttäjien ohjaaminen haitallisille verkkosivustoille)

XSS-tyypit

  1. DOM-pohjainen XSS
  2. Hyökkäys tapahtuu kokonaan selaimessa manipuloimalla Document Object Modelia (DOM) ilman palvelimen osallistumista.
  3. Tallennettu XSS
  4. Haitallinen skripti tallennetaan pysyvästi palvelimelle, kuten tietokantaan tai profiilisivulle.
  5. Heijastettu XSS
  6. Skripti heijastuu verkkopalvelimelta (esim. URL-osoitteessa tai virheilmoituksessa), skripti suoritetaan, kun uhri napsauttaa hyökkääjien luomaa linkkiä.

Kuinka estää XSS

  • Syötteen puhdistus ja tulosteen koodaus: aina käyttäjän syötteen puhdistaminen ennen sen käsittelyä, muuntaen käyttäjän syötteen turvalliseen muotoon
  • Käytä Content Security Policy (CSP): rajoittaa, mitä skriptiä voidaan suorittaa selaimessa.
  • Vältä eval() ja sisäistä JavaScriptiä: vähentääksesi injektiouhkia.
  • Turvatestaus (DAST/IAST): suorita turvatestausta haavoittuvuuksien havaitsemiseksi varhaisessa vaiheessa

Esimerkki tosielämän tapauksesta - Samy-mato (MySpace, 2005)

Mitä tapahtui: Samy Kamkar julkaisi MySpace-profiilin, joka sisälsi tallennetun XSS-hyökkäyksen. Kun muut käyttäjät katsoivat profiilia, hyökkäys suoritettiin heidän selaimissaan, ja se (a) lisäsi Samyn ystäväksi, (b) lisäsi lauseen “Samy on sankarini” heidän profiileihinsa ja (c) kopioi itsensä näiden käyttäjien profiilisivuille.

Vaikutus: Mato levisi itsestään ~1 miljoonalle käyttäjälle noin 20 tunnin kuluessa, mikä pakotti MySpacen tilapäisesti offline-tilaan.

Miksi se toimi: MySpace salli pakkaamattoman HTML:n/attribuuttien käytön profiilikentissä, mikä mahdollisti tallennetun skriptin suorittamisen vierailijoiden selaimissa.

Opit / korjaus: Oikea ulostulon koodaus, syötteen puhdistus, HTML:n poistaminen profiilikentistä ja nopea korjaaminen. Samy kohtasi myöhemmin oikeudellisia seuraamuksia, ja MySpace otti käyttöön suodattimia.

Liittyvät termit

Seuraavat askeleet

Valmis turvaamaan sovelluksesi? Valitse polkusi eteenpäin.

Liity yli 500 yritykseen, jotka jo turvaavat sovelluksensa Plexicuksen avulla

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready