10 nasvetov za obrambo pred napadi CSRF
Ko zlonamerna spletna aplikacija omogoča, da uporabniški brskalnik izvede neželeno dejanje na spletnem mestu, v katerega je uporabnik prijavljen. Gre za ranljivost spletnih aplikacij, ki na funkcijah ne vsebujejo mehanizmov za prepoznavo (ne)namernih klicev uporabnikov. Aplikacija mora biti namreč sposobna razlikovati med klici, ki jih uporabniki posredujejo namerno, in tistimi, ki jih posreduje nehote.
Vsebinsko gledano so lahko grožnje, ki jih prinašajo ranljivost CSRF, zelo različne. Ko se ranljivost nanaša na najpomembnejše funkcije aplikacije (npr. nakazilo denarja v spletni banki), so grožnje jasne in nedvoumne. Ko pa se ranljivost nanaša na tiste na videz manj pomembne funkcije, pa grožnje na prvi pogled niso tako očitne, ampak so skrite v širšem konceptu zlorabe.
Problem pri slednjih je, da razvijalec aplikacije težko predvidi, ali obstaja scenarij, po katerem bi bila zloraba mogoča. »Domišljija napadalcev ob pravi motivaciji nima meja, tako da lahko podcenjevanje hitro privede v nezaželeno situacijo. Zato naj tudi te funkcije vsebujejo vso potrebno zaščito,« priporoča Vladimir Ban, strokovnjak za kibernetsko varnost iz podjetja Smart Com.
Med najpogosteje ranljive funkcije spadajo:
- nepooblaščeno spreminjanje gesel uporabnikov,
- nepooblaščeno dodajanje uporabnikov s strani skrbnika,
- nepooblaščeno nakazilo denarnih sredstev,
- spreminjanje podatkov v profilih uporabnikov itd.
Nivo ogroženosti, ki ga ranljivost CSRF prinaša, pa ni odvisen le od vsebinskih dejavnikov, ampak tudi od tehničnih okoliščin oz. lastnosti funkcije/aplikacije. Odgovori na naslednja vprašanja so odlično izhodišče za določitev, kako izpostavljeni smo, in pomenijo smernice, kako poskrbeti za ustrezno zaščito:
- Ali lahko napadalec napad izvede preko GET klica, ali ne?
- Ali in kako ve, kakšen klic mora sprožiti?
- Ali je napadalcu težko sestaviti klic do aplikacije?
- Kako se aplikacija obnaša ob prijavi in ob ranljivih klicih?
- Ali morda CSRF zaščita obstaja, a je ranljiva?
Kako lahko ranljivost preprečimo
Osnovna ideja CSRF zaščite je dokaj enostavna. Aplikacija mora vsebovati mehanizem, ko klici na funkcije, poleg vseh ostalih zadev, uporabljajo tudi parameter, ki je za vsak klic pripravljen enolično in neuganljivo (CSRF_token). Na ta način lahko aplikacija hitro razpozna oz. loči namerne klice od nenamernih. Namerni klici potekajo preko nadzorovanega in pričakovanega procesa v aplikaciji in brskalniku bo le ta lahko v okviru procesa posredovala enoličen in neuganljiv parameter. V teoriji je vse lepo in prav, a primeri iz prakse pokažejo, da so mehanizmi zaščite pogosto napačno implementirani in zato pomanjkljivi.
V praksi večina programskih jezikov in platform že vsebuje ukaze ali preizkušene ‘framework-e’, ki vzpostavijo ustrezno zaščito. Primer tega je SFRGuard knjižnica za Java programski jezik. »Že pripravljene zaščite naj se striktno uporabljajo,« vsem razvijalcem spletnih aplikacij še svetuje Vladimir Ban.
Uporaba omenjenega zaščitnega mehanizma je pomemben korak pri preprečevanju ranljivosti. Obstajajo pa številna druga priporočila oz. nasveti za obrambo pred CSRF napadi, ki jih je koristno poznati in jih tudi implementirati. Podrobno so predstavljeni v beli knjigi z naslovom Ali so vaše spletne aplikacije odporne na ranljivost CSRF.
Spletne aplikacije so danes vseprisotne. Posledično so izvor največjega števila varnostnih groženj in ranljivosti. Podjetja, ki varnosti spletnih aplikacij posvečajo premalo pozornosti, povečujejo verjetnost za napad.
Prijavi napako v članku