Pogoste ranljivosti pri spletnih aplikacijah

Pogoste ranljivosti pri spletnih aplikacijah

Čeprav večina ljudi misli, da so danes spletne aplikacije bolj varne kot nekoč, je resnica veliko manj optimistična. Aplikacije, ki so zaščitene s pregledovalnikom ranljivosti, so vse bolj varne. Nasprotno velja za aplikacije, ki niso zaščitene, te imajo veliko več ranljivosti.

Kaj je ranljivost?
Ranljivost je napaka v aplikaciji ali napravi, ki jo lahko zlonamerni hekerji izkoristijo za dosego cilja, kot je kraja občutljivih informacij, ogrozitev sistema tako, da postane nedosegljiv, ali poškodujejo podatke. Ranljivosti vrstimo glede na njihovo resnost: visoka, srednja, nizka.

Poglejmo si nekaj ranljivosti, ki se kljub dolgoročnemu obstoju še vedno pojavljajo pri spletnih aplikacijah.

SQL Injection (SQLi) in Blind SQL Injection

SQL Injection ali vrinjenje SQL stavkov je možno, če razvijalec ne preverja uporabniških vnosov. Posledično lahko napadalci preko nepreverjenih vnosnih polj vrinejo SQL poizvedbeni stavek, ki se nato izvede na bazi podatkov. Takšna poizvedba lahko razkrije, doda, spremeni ali izbriše tako zapise kot tudi celotne tabele podatkov.

Blind SQL Injection je bolj zapletena različica SQLi. Napadalci ga uporabljajo, kadar tradicionalni SQLi ni mogoč. Slepe SQL injekcije zahtevajo veliko časa in veliko število zahtev. Skrbnik sistema lahko napad opazi tako, da z uporabo preprostih orodij za nadzor dnevnikov preveri veliko število zahtev.

Kljub temu da se je SQL vrinjenje prvič pojavilo v 90ih letih in dandanes vsa glavna razvojna okolja vključujejo orodja za njegovo odpravo, se ranljivost še vedno pogosto pojavlja.

SQL Injection (SQLi) in Blind SQL Injection

Cross-site Scripting (XSS)

XSS napad se zgodi, ko napadalec vrine zlonamerno skripto na spletno stran, običajno JavaScript. Interaktivne spletne aplikacije morajo izvajati skripte v lokalnem brskalniku, kar omogoča »cross-site« – medsebojno skriptiranje.

Tovrstna ranljivost je možna, če razvijalec na spletni aplikaciji ne preverja uporabniških vnosov. Če uporabnik vključi JavaScript kodo v vnosni obrazec in spletna aplikacija ta vnos uporabi neposredno na strani, to zagotavlja ranljivost XSS.

Za boj proti tem napadom lahko uporabite CSP (Content Security Policy), vendar ta funkcionalnost še vedno ni dovolj priljubljena med spletnimi razvijalci.

Cross-site Scripting (XSS)
25% pregledanih spletnih mest je bilo ranljivih za nekatere vrste XSS. (Acunetix, 2020)

Ranljive JavaSkript knjižnice

JavaScript knjižnice omogočajo hitrejši in enostavnejši razvoj spletnih aplikacij, vendar so nekatere verzije knjižnic lahko ranljive.

Ranljive JavaSkript knjižnice
24% pregledanih spletnih mest uporablja JavaScript knjižnice z znanimi ranljivostmi XSS. (Acunetix, 2020)

Cross-site Request Forgery (ponarejeni zahtevki)

Ranljivost se pojavi, ko spletni strežnik prejme nepooblaščeno zahtevo s strani znanega brskalnika. Zahteve, ki jih brskalnik pošlje strežniku lahko vključujejo uporabniške piškotke seje – to se zgodi skoraj vedno, ko je uporabnik že prijavljen na spletno mesto.

Napadalec lahko ustvari zlonamerno povezavo, ki mu omogoči izvedbo določenega dejanja, na primer prenos finančnih sredstev z uporabnikovega bančnega računa na drug račun. Napadalec lahko to povezavo postavi na spletno mesto in prepriča uporabnika, da klikne to povezavo (socialni inženiring). Ko uporabnik klikne povezavo, se zahteva pošlje strežniku in ker je uporabnik že prijavljen, strežnik izvede dejanje z njegovim računom.

CSRF ranljivost je prepogosto spregledana, glede na to da so lahko posledice zlorabe uničujoče. Neustrezna zaščita lahko vodi v krajo podatkov, gesel ali celo nezaželen prenos finančnih sredstev.

Cross-site Request Forgery (ponarejeni zahtevki)
36% pregledanih spletnih mest ni odpornih na CSRF ranljivost (Acunetix, 2020)

Šibka gesla in manjkajoča zaščita proti Brute-Force napadom

Šibka gesla so po navadi kratke in pogoste besede ali privzete vrednosti. Napadalec lahko zlahka ugane takšno geslo, ko naleti na poziv za prijavo. V nekaterih primerih lahko z »dictionary« napadom ugane šibko geslo, v drugih primerih pa so šibka gesla preprosto privzete kombinacije uporabniškega imena in gesla, kot sta admin/admin ali admin/geslo.

Veliko število napadov se začne pri šibkih geslih, okoli 28% spletnih aplikacij pa ne vsebuje zaščite pred »Brute-force« napadi. To pomeni, da lahko napadalec neskončnokrat ugiba prijavno kombinacijo.

Se želite prepričati, če je vaše spletno mesto varno?
Sporočite svojo željo na info@adm-adria.eu ali telefon 059 251 955 in z veseljem vam bomo pomagali in svetovali.