Cross site request forgery (CSRF)

Cross site request forgery (CSRF)

CSRF je napad koji za cilj ima izmjenu stanja nekog servera gdje je žrtva autentikovana kao legitimni korisnik, bez njihovog znanja. Napad se obično izvršava postavljanjem URLa GET zahtjeva koji će izvršiti željenu promjenu u HTML kod neke stranice i prisiljavanjem korisnika da ga pošalje. Ovakav napad nema za cilj otkrivanje nekih podataka napadaču jer on nema uvid u odgovor, već samo promjenu nekog stanja u njegovu korist.

Primjer ovakvog napada u praktičnoj primjeni je transfer novca sa računa korisnika na račun napadača bez znanja korisnika. Uzmimo za primjer neku web aplikaciju za online bankarstvo koja GET zahtjevima prima parametre za transfer novca na sledeći način :

http://ranjiva.banka.com/transfer.do?account=Napadac&amount=1000

Zahtjev kreiran na ovaj način će sa računa korisnika izvršiti transfer na račun napadača u vrijednosti od 1000. Sve što napadač sada treba da uradi je da prisili nekog korisnika ove banke da pozove link. Za uspješno izvršavanje napada potrebno je da korisnik u tom trenutku ima aktivnu sesiju sa web aplikacijom banke, koristeći socijalni inženjering napadač može da prepozna takve scenarije. Jedan od efikasnih načina je da napadač ugradi neki URL u samu aplikaciju (stored CSRF) i bude siguran da će korisnik koji pristupa sadržaju već imati aktivnu sesiju. 

Neki od načina da se URL ugradi u kod neke stranice su postavljanje slika dimenzija 0x0 gdje je source link za napad ili postavljanje linka čiji tekst upućuje na nešto drugo.

<img src=”http://ranjiva.banka.com/transfer.do?account=Napadac&amount=1000″ width=”0″ height=”0″ border=”0″>

<a href=”http://ranjiva.bank.com/transfer.do?account=Napadac&amount=1000″>Nove slike!</a>

Korištenje POST umjesto GET možda zvuči kao rješenje jer napadač ne može koristiti ovakve linkove ali moguće je kreiranje formi za unos na lažnom web sajtu koje će pogrešno informisati korisnika i vršiti post sa željenim parametrima, međutim zbog same origin politike koja ne dozvoljava pristup povjerljivim podacima ako zahtjevi dolaze sa adresa koje ne ispunjavaju određene uslove jednakosti ovakav zahtev neće proći.

Zaštita od ove vrste napada se postiže korištenjem tokena za validaciju, provjerom referer headera i na jos nekoliko načina.

Izvor:www.owasp.org

Leave a Reply