Cross-site scriptingCross-site scripting (XSS) je tip propusta u kompjuterskoj bezbednosti koji se po pravilu nalazi u Web aplikacijama. XSS dozvoljava napadaču da injektuje klijentsku skriptu (Na primer JavaScript kod)[1] u web stranicu koja je kasnije pregledna drugim korisnicima. XSS slabost se može upotrebiti kako bi se zaobišla sigurnost sajta i samim tim izgubila kontrola nad istim, ili kako bi se ukrale informacije korisnika koji pristupaju sajtu. 2007. godine je zabeleženo da je razlog za oko 84% sigurnosnih propusta XSS.[2] PozadinaSigurnost na web-u se bazira na nekoliko mehanizma, uključujući i koncept poverenja poznat kao politika istog porekla (engl. same-origin policy). On u suštini kaže da ako bilo koji sadržaj unutar sajta (na primer https://mojabanka.primer1.com[мртва веза]) ima dozvolu za pristup resursima u sistemu, onda svaki sadržaj na tom sajtu deli iste privilegije, dok sadržaj sa drugog sajta (na primer https://drugisajt.primer2.com[мртва веза]) ima svoje, odvojene, dozvole.[3] XSS upotrebljava poznate slabosti u web aplikacijama, njihovim serverima, ili plug-in sistemima na kojima se oslanjaju. Eksploatacijom jedne od ovih, napadač implementira zlonameran sadržaj unutar sadržaj samog sajta. Kada rezultujući, kombinovani, sadržaj dostigne korisnika sa klijentske strane, sav materijal dolazi od poverljivog izvora, pa zatim računar daje puna prava skriptama te stranice. Ovim načinom, injekcijom skripta u web stranice, napadač može, sa punim pravom, preuzimati podatke o podacima na osetljivim stranicama, kolačiće, i niz drugih informacija koje pretraživači čuvaju za korisnika. XSS je, pritom, specijalan način injekcije koda u web sajtove.[4] Prvi načini injekcije su bili JavaScript kodovi, međutim načini XSS napada su gradijalno rasli, gde su danas popularni i drugi jezici za injekciju (ActiveX, Java, VBScript, Flash, ili čak HTML).[4] XSS slabosti su prijavljene još od 1990. Oštećeni sajtovi koji su pali pod efekat XSS-a uključuju i sajtove socijalnih mreža (Twitter,[5] Facebook,[6] MySpace, YouTube i Orkut).[7][8] U skorije vreme, XSS propusti su prestigli bafer propuste i postali najčešća vrsta napada, gde je 2007. godine procenjeno da je 68% sajtova nezaštićeno od ovakvih napada.[9] TipoviNe postoji samo jedna, standardna klasifikacija XSS propusta, već većina eksperta razlikuje bar dva načina XSS napada: neuporni i uporni. Neki ih takođe razvajaju u tradicionalne (prouzrokovana greškom serverskog koda) i DOM naklonjene (na klijentskoj strani koda). Reflektujući (neuporni)
Neuporni (ili reflektujući) XSS napadi su najčešći.[10] Ove rupe se pokazuju kada podaci, koji su dodeljeni od strane web klijenta, najčešće tipa HTTP upitnički parametar ili HTML forma, budu odmah upotrebljeni od strane serverskih skripti tako da parsiraju i prikažu rezultujuću stranicu korisniku, bez ikakve ispravne sanitacije i zahteva.[11] Zato što HTML dokumenti imaju prostu, serijalnu strukturu, koja meša kontrole, formate i sadržaj u jedno, svaki nevalidan podatak ubačen unutar stranice bez ispravnog HTML enkodiranja može dovesti do injekcije.[10] Klasičan primer potencijalne pretnje je pretraživanje po sajtu. Ukoliko sajt nije zaštićen, korisnik u pravougaonik za pretraživanje može uneti niz karaktera koji predstavlja HTML implementaciju JavaScript koda i samim tim oštetiti sigurnost sajta. Zato je veoma važno parsirati sve načina unosa.[12] Reflekovani napad se tipično poručuje putem email-a ili neutralnih web sajtova. Mamac je URL standardnog izgleda, koji pokazuje na sajt u koji imate poverenja, ali sadrži XSS vektor. Ukoliko je poverljiv sajt neosiguran od XSS-a, klikom na link može prouzrokovati da žrtvin pretraživač pokrene injektovanu skriptu. Uporni
Uporni (ili snimljeni) XSS napad je više razarajuć tip XSS slabosti. On se pojavljuje tako što se ubačeni kod snima na serveru, i zatim se trajno pojavljuje na "normalnoj" stranici. Klasičan primer ovakvog napada su komentari. Ukoliko sajt nije zaštićen, napadač može postaviti zlonameran kod unutar komentara, koji će kasnije biti sačuvan na serveru. Bilo koji korisnik koji nakon toga pristupi zaraženoj stranici je izložen tom kodu.[11] Primera radi, pretpostavite da postoji sajt za upoznavanje, gde korisnik može pregledati tuđe profile. Radi privatnosti, sajt krije svačije i email adresu. Oni su sačuvani kao tajna na serveru. Jedini korisnik koji može videti ime i mail je sam korisnik kom pripada profil. Napadač hoće da sazna ime korisnika na tom sajtu. Kako bi to uradio, on napiše skriptu koji se pokraće kada neko poseti njegov profil. Skripta zatim šalje poruku na njegov server o informacijama tih korisnika. Na pitanje na sajtu "Opišite sebe", napadač daje kratak (naizgled normalan) odgovor, ali na kraju odgovora napadač još dodaje i svoju skriptu za krađu imena i email adrese. Ukoliko se skripta nalazi unutar <script> elemenata, HTML će ga protumačiti kao JavaScript i neće biti prikazan na sajtu, ali će se pokrenuti svaki put kada neki korisnik uđe na sajt, njegovo ime i email će biti preuzet i poslat na server napadača. Uporni XSS može bizi značajniji nego bilo koji drugi napada, zato što se napad pokreće odmah po otvaranju stranice, bez ikakvog individualnog ciljanja žrtve ili navođenja na bilo kakav sajt treće strane. Na primeru iznad, skripta će uporno krasti proizvoljan broj informacija svih korisnika do onog trenutka kada administratori ne uklone tu grešku.[14] Serverske i DOM bazirane slabosti
Istorijski, prvi XSS napad je nađen u aplikaciji koja je sve podatke procesovala unutar servera. Korisnički unos (uključujući i XSS vektor) bi se slao na server, i zatim nazad korisniku kao web stranica. Potreba za boljom interakcijom korisnika dovela je do toga da se većina ranije serverskih zadataka danas izvršava na klijentskom nivou (na primer pomoću JavaScript-a), pa i da se zahtevi izvršavaju klijentski pomoću AJAX-a. Kako se JavaScript sve češće pojavljivao, nova podklasa XSS napada je započela, nazvan DOM bazirani XSS napad.U DOM baziranom XSS napadu, zlonameran podatak ne dotiče server, već se potpuno reflektuje na klijentskom nivou.[16] Primer DOM bazirane XSS-a je greška koja je pronađena 2011 u nekoliko JQuery nadogradnji.[17] Prevencija DOM baziranih XSS uključuje veoma slične mere kao tradicionalni XSS, osim što implementira JavaScript kod u poslatu web stranu.[18] Primeri eksploitacijaNapadač koji ima nameru da izvrši eksploitaciju XSS slabosti mora pristupiti klasi svake slabosti na drugi način. Za svaku klasu, specifičan napadački vektor je opisan ovde. Imena ispod su tehnički termini, uzeti iz baze imena koja su često korišćena u kompjuterskoj sigurnosti. Neuporni:
Nekoliko stvari je moglo sprečiti ovakav napad:
Uporni napadi:
FrameworkPretraživač-exploitacija Framework (engl. The Browser Exploitation Framework) može biti upotrebljen za napad websajtova i njegovih korisnika.[20][21] Vidi jošReference
|
Portal di Ensiklopedia Dunia