AJAX sigurnost: Je li AJAX tehnologija ranjiva na napade zlonamjernih korisnika?
AJAX i JavaScript: pojašnjenje tehnologije
U zadnje vrijeme, zbog porasta interesa za Web 2.0, povećava se potreba korištenja AJAX (eng. Asynchronous JavaScript and XML) tehnologija u web aplikacijama.
Uporaba skriptnog jezika JavaScript (JS) je jedan od glavnih razloga sve veće popularnosti AJAX tehnologije. JavaSript nudi niz prednosti kao što su:
-
dinamičke forme koje imaju ugrađenu provjeru pogrešaka,
-
izračuni na web stranicama,
-
interakcija s korisnicima uz sigurnosna upozorenja i potvrde,
-
dinamička izmjena pozadine i boja teksta ili dugmadi,
-
čitanje povijesti posjećenih web stranica i poduzimanje radnji na temelju dobivenih informacija,
-
otvaranje nadzornih prozora,
-
pribavljanje različitih dokumenata ili njihovih dijelova ovisno o zahtjevima korisnika.
AJAX nije tehnologija, već skup različitih tehnologija, od kojih svaka čini određeni dio pri dizajnu i razvoju web stranice:
-
XHTML ili HTML i Cascading Style Sheets (CSS) daju standarde prezentacije sadržaja korisniku.
-
DOM (eng. Document Object Model) sadrži strukturu kojom dopušta dinamičku reprezentaciju sadržaja i interakciju s funkcijama ugrađenim u web stranice. DOM pokazuje načine na koji korisnici mogu pristupiti i upravljati elementima svakog dokumenta.
-
XML i MSLT služe za razmjenu podataka između klijenta i poslužitelja te upravljanje sadržajem.
-
XML HTTP Request: Glavni nedostatak pri stvaranju web aplikacije je u tome što se prekida veza s poslužiteljem kada se određena stranica učita u korisnikovom pregledniku. Sljedeće pregledavanje sadržaja, čak i sa stranice koju korisnik trenutno pregledava, zahtjeva uspostavljanje nove veze s poslužiteljem iako je korisnik možda samo želio izmijeniti manji dio stranice. XML HTTP zahtjev dopušta asinkroni prihvat podataka i osigurava da se stranica ne učitava ponovo svaki put kada korisnik zahtjeva i najmanju promjenu.
-
JavaScript je skriptni jezik koji povezuje sve ove tehnologije da bi mogle uspješno zajedno izvoditi potrebne funkcije i zato ima najznačajniju ulogu u stvaranju dinamičnih web aplikacija
AJAX povećava interaktivnost, brzinu i uporabljivost web stranica. AJAX tehnologije korisnicima donose bolja i bogatija iskustva jer se web aplikacije stvaraju tako da imitiraju ˝tradicionalne˝ aplikacije. Neki primjeri su Google Docs i Spreadsheets, Google Maps i Yahoo! Mail.
Na početku web sjednice, umjesto učitavanja tražene web stranice, učitava se AJAX mehanizam napisan JavaScriptom.. Ovaj mehanizam se ponaša kao sredstvo komunikacije između korisničkog preglednika i poslužitelja.
Korištenjem AJAX tehnologija, za vrijeme primanja zahtjeva web poslužitelj primjećuje da su individualne komponente stranice neovisno (asinkrono) obnovljene za vrijeme prekida veze. To je različito od dosadašnje potrebe da se ponovo učita cijela stranica kako bi se pokazala promjena na strani klijenta, što se slučaj kod statičkih web stranica.
Prije je čitanje elektroničke pošte na Webu zahtijevalo intenzivnu korisničku interakciju kao i slanje i primanje različitih stranica u okvirima koji su činili sučelje samo da bi se korisnicima omogućilo prikazivanje elektroničke pošte. To je drastično usporavalo korisničku uporabu. S asinkronim transferom, AJAX aplikacija potpuno isključuje ˝početak-kraj-početak-kraj˝ prirodu interakcije na webu – zahtjevi prema poslužitelju u potpunosti su transparentni korisniku.
Drugi vidljivi dobitak je relativno brzo učitavanje različitih komponenti željene web stranice. To vodi i do značajne redukcije potrebne pojasne širine jer se web stranica ne mora u potpunosti ponovo učitati.
Još jedna važna prednost AJAX tehnologije uključuje umetanje i/ili brisanje arhiva, prijavu obrazaca, dohvaćanje upita te uređivanje kategorizacijskih stabala. Svi ovi zadaci se izvode puno učinkovitije i uspješnije bez potrebe za ponovnim učitavanjem stranice svaki put kada korisnik zahtjeva i najmanju promjenu.
AJAX RANJIVOSTI
Iako je AJAX najmoćniji skup tehnologija, razvojni programeri moraju biti svjesni potencijalnih sigurnosnih rupa koje AJAX aplikacije posjeduju.
Po riječima Petea Lindstroma, direktora Sigurnosnih strategija u grupi Hurwitz, web aplikacije su danas najranjiviji elementi organizacijske IT infrastrukture. Rastući broj organizacija (komercijalnih i neprofitnih) ovise o web aplikacijama koje se oslanjaju na AJAX tehnologiju. U želji za što većom funkcionalnošću web aplikacija raste i složenost AJAX tehnologija, a time se povećava broj sigurnosnih rizika od kojih se organizacije moraju zaštiti.
Povećana interaktivnost s web aplikacijom dovodi do rasta količine XML teksta, kojim se razmjenjuju podaci između klijenta i poslužitelja i općenito mrežnog HTTP prometa. To može voditi do otkrivanja pozadinskih aplikacija koje prije nisu bile ranjive te, ako je zaštita na strani poslužitelja nedovoljna, zlonamjernim korisnicima daje mogućnost upravljanja konfiguracijom korisničkih privilegija.
Postoji opća zabluda da su AJAX aplikacije sigurnije jer se smatra da korisnik bez korisničkog sučelja ne može pristupiti skripti na strani poslužitelja. Web aplikacije koje se zasnivaju na razmjeni XML HTTP zahtjeva korisnicima onemogućuju nadzor nad skriptama na strani poslužitelja, što razvojnim inženjerima i vlasnicima web stranica daje lažan osjećaj sigurnosti. Budući da XML HTTP zahtjevi funkcioniraju korištenjem istog protokola kao i svi drugi zahtjevi na webu (HTTP), sve web aplikacije koje se temelje na AJAX tehnologiji su ranjive na iste zlonamjerne metode kao i druge web aplikacije.
Time se povećava broj web ranjivosti pri razmjeni podataka i sve je veći rizik zlonamjernog dobivanja pristupa mnogim skrivenim URL (eng. Uniform Resource Locator) lokacijama koje su potrebne za izvođenje AJAX zahtjeva.
Još jedna slabost AJAX tehnologije je proces koji formulira zahtjeve poslužitelja. AJAX mehanizam koristi JavaScript za dohvat zahtjeva korisnika i transformira ih u pozive funkcija. Pozivi funkcija šalju se u obliku teksta na poslužitelj i mogu lagano otkriti polja u tablicama baze podataka poput korisničkih imena i sl. Njima se mogu unositi imena varijabli, mijenjati tipovi podataka ili njihove vrijednosti i svaki drugi parametar kojim zlonamjerni korisnici mogu upravljati.
S tim informacijama zlonamjerni korisnici mogu jednostavno koristiti AJAX funkcije,slanjem specifičnih HTTP zahtjeva direktno na poslužitelj, bez direktnog kontakta poslužitelja i korisničkog preglednika. U slučaju XSS (eng. Cross-Site Scripting) ranjivosti zlonamjerno umetnute skripte mogu utjecati na funkcionalnosti osigurane AJAX tehnologijom tako da djeluju u ime korisnika istodobno ga prateći s konačnim ciljem preusmjeravanja razmjene podataka i upravljanja njegovim prometom.
JavaScript ranjivosti
Iako mnoge web stranice pripisuju svoje interaktivne osobine JavaScriptu, široka uporaba te tehnologije donosi nekoliko značajnih sigurnosnih problema.
U prošlosti, većina tih sigurnosnih problema javljala se zbog crva koji su napadali sustav elektroničke pošte ili iskorištavali XSS slabosti web stranica. Takvi progresivni crvi omogućavali su umetanje koda u web stranice s ciljem obavljanja analize, manipulacije ili jednostavno prikupljanja podataka o web preglednicima ili elektroničkoj pošti.
Kako se nastavlja razvoj web preglednika i njihovih tehničkih sposobnosti, tako se razvijaju i mogućnosti zlonamjernog upravljanja podacima. To tehnološko napredovanje se događa u vrijeme kada se pojavila značajna promjena u konačnom cilju zlonamjernih korisnika, čiji se primarni cilj promijenio od čina vandalizma do krađe korporativnih podataka, što im donosi unosne prihode na crnom tržištu.
XSS crvi će postati sve inteligentniji i sve sposobniji za izvođenje destruktivnih napada poput distribuiranog DoS napada, napada putem elektroničke pošte i nepouzdanih web preglednika. Nedavno je otkriveno da je moguće koristiti JavaScript za dobivanje pristupa lokalnim i korporativnim mreža, što svaki uređaj spojen na mrežu automatski čini ranjivim.
Konačno, tako sofisticirani napadi mogu dovesti do odabira specifičnih mrežnih uređaja i izvođenja zlonamjernog JavaScript koda na web stranici korporativnog interneta ili na bilo kojoj AJAX aplikaciji dostupnoj za javnu uporabu.
Većina dostupnih web skenera nailazi na ozbiljne probleme s umetnutim JavaScript-om pri provjeri web stranica, što je veliki problem. Na primjer, JavaScript s korisničke strane zahtjeva mnoštvo manualnih intervencija.
Sažetak i zaključak
Razvoj web tehnologija ide u smjeru povećavanja učinkovitosti, osjetljivosti i interakcije web aplikacija. Takav napredak, međutim, povećava i razinu prijetnji s kojima se tvrtke i razvojni inženjeri svakodnevno susreću.
Javni web priključci 80 (HTTP) i 443 (HTTPS) uvijek su otvoreni za dostavljanje dinamičkog sadržaja i razmjenu podataka, što web stranice dovodi u neprekidnu opasnost krađe podataka. Opasnost se može smanjiti neprekidnim provjeravanjem ranjivosti web stranica pouzdanim web skenerima. Kako raste kompleksnost tehnologija slabosti web stranica postaju sve očitije i njihove ranjivosti.
Primjena AJAX tehnologije nije unijela nove sigurnosne ranjivosti u razvoj i ostvarenje web aplikacija, ali je ipak povećala sigurnosne probleme, koji rastu samim razvojem tih tehnologija. Porastom broja skripti koje se izvode i porastom količine razmjenjivanih podataka pri komunikaciji između poslužitelja, zlonamjerni korisnici imaju veće mogućnosti za krađu i druge zlonamjerne aktivnosti. Zlonamjerni korisnici tako oštećuju organizacije za tisuće dolara prihoda, uništavaju povjerenje korisnika i čine značajne štete reputaciji organizacije i njenoj vjerodostojnosti.
Jedino učinkovito i djelotvorno rješenje za provjeru sigurnosti jest skener ranjivosti, koji automatski ispituje sigurnost web aplikacije i pokušava identificirati njene ranjivosti. Međutim, bez mehanizma koji analizira i izvodi JavaScript, provjera je netočna i daje lažan osjećaj sigurnosti vlasnicima web stranica.
|