ranjivosti web aplikacija

Kako sprečiti neke od najčešćih ranjivosti u web aplikacijama

16 јануара, 2022

Kao što znate ranjivosti u web aplikacijama čine vas podložnim napadima tokom kojih bi podaci klijenata i kompanije mogli biti ugroženi. Kao rezultat toga, možete pretrpeti ozbiljne finansijske gubitke. Da ne pričamo o narušenoj reputaciji i izgubljenom poverenju klijenata. Da bi ste preventivno delovali, dobro je da znate kako sprečiti neke od najčešćih ranjivosti u web aplikacijama.

Neke od najčešćih ranjivosti u web aplikacijama

Evo spiska neke od najčešćih napada koje hakeri mogu da pokušaju na vašem web sajtu. Poznavanje ovih uobičajenih ranjivosti web aplikacija pomoći će vam da ih brže identifikujete i lakše popravite.

SQL injection

Mnogi hakeri počinju sa pokušajem da dobiju pristup bazi podataka putem SQL injection-a (ubrizgavanje koda). Na primer napadač ubacuje zlonamerne SQL statement-e u polja forme i druge tačke ubrizgavanja, sa namerom da prikupi informacije iz baze podataka i preuzme kontrolu nad bazom podataka. On može da koristi ove informacije da pristupi, izmeni ili čak uništi podatke, pa čak i da napadne ceo sistem.

Ova vrsta napada se obično koristi za prikupljanje bitnih informacija o klijentima kao što su njihovi kontakt podaci, lozinke ili čak podaci o kreditnoj kartici. Ako je u pitanju e-commerce sajt napadači čak mogu da iskoriste ovaj propust da promene cenu proizvoda. U nekim slučajevima čak mogu da preuzmu kontrolu nad serverom baze podataka i operativnim sistemom.

Rešenje

  • Pripremljeni statement-i sa parametrizovanim upitima mogu ublažiti ovu ranjivost. Pripremljen statement pomaže u kontroli unosa podataka u online formu i osigurava da ga sistem prepoznaje kao string literal u SQL-u, a ne kao deo SQL upita. Drugim rečima, baza podataka može da razlikuje SQL podatke i SQL kod. Dakle, kod više nije ranjiv na SQL injection napade jer je upit manje podložan neovlašćenom pristupu.
  • Prelazak na Object Relational Mapping alate (ORM) je dobro rešenje. Međutim, većina ORM-ova dozvoljava neparametrizovane upite pored izvođenja parametrizovanih upita. Imajući to u vidu , va#no je pažljivo koristiti framework-ove. Maksimalno iskoristite LIMIT i druge SQL kontrole u ​​vašim upitima tako da čak i ako dođe do napada SQL injection-om, ne dođe do masovnog otkrivanja record-a..

Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) je jedna je od najpopularnijih ranjivosti web aplikacija koja bi mogla da ugrozi bezbednost posetilaca vašeg sajta. Za razliku od SQL injection napada, ovi napadi ubacuju zlonamerni kod u pokrenutu aplikaciju i izvršavaju je na strani klijenta.

Cilj XSS napada je da se ovaj zlonamerni kod pošalje drugim korisnicima, ponekad zaražavajući njihove uređaje zlonamernim softverom. Cilj može biti i krađa osetljivih podataka. Ova vrsta ranjivosti može dati napadaču potpunu kontrolu nad browser-om korisnika i može biti izuzetno opasna za bilo koji web sajt..

Rešenje

  • Moderni framework-ovi su znatno olakšali ublažavanje XSS napada. AngularJS, React JS i Ruby on Rails su neki od najnovijih, najefikasnijih framework-ova koji mogu sprečiti ovu vrstu ranjivosti. Oni mogu automatski da izbegnu unos korisnika i da pomognu u ublažavanju ove takve vrste napada.
  • Izbegavajte primenu black liste, jer je ona manje efikasna u sprečavanju ranjivosti. Napadač koji zna šta radi može lako zaobići filter sa crne liste.
  • Primenite taktiku kodiranja izlaza. To znači da će specijalni karakteri biti prevedeni u ekvivalentan oblik koji browser više neće smatrati značajnim.
  • Primenite Content Security Policy (CSP), koja može biti veoma efikasna u ublažavanju XSS ranjivosti.

Neuspešna autentifikacija

Ova vrsta ranjivosti se javlja kada postoji nepravilna primena kontrola za autentifikaciju korisnika. To predstavlja potencijalnu opasnost od upada u korisničke naloge. Napadači mogu da iskoriste ove propuste da bi preuzeli kontrolu nad bilo kojim korisničkim nalogom ili čak nad celim sistemom.

Jedna od ovih ranjivosti je Credential Stuffing, gde će napadač testirati listu važećih lozinki i korisničkih imena koje je prikupio iz nekog drugog napada, sve dok ne uspe da pronađe ispravnu kombinaciju i dobije pristup.

Još jedna uobičajena ranjivost je Brute Force napad, u kojem napadač pokušava svaku moguću kombinaciju karaktera dok ne pronađe ispravnu.

Pored toga, Session hijacking je još jedan uobičajeni napad koji može nastati kao rezultat neuspešne autentifikacije. Ovo se dešava kada se neispravno ponište ID-ovi sesije, dozvoljavajući napadačima da iskoriste već autentifikovanu sesiju legitimnog korisnika.

Rešenje

  • Jedno od mogućih rešenja je da se programerima omogući dovoljno vremena da testiraju kod pre nego što se primeni u produkciji.
  • Eksterne revizije bezbednosti takođe mogu pomoći da se osigura da se primene najbolja praksa iz domena IT bezbednosti.
  • Izbegavajte primenu sa podrazumevanim (default) kredencijalima, posebno za administratore.
  • Gde god je to moguće, uverite se da implementirate dvofaktorsku autentifikaciju, kako biste vaš sistem učinili manje ranjivim na pomenute napade.
  • Stavite limit ili delay za neuspele pokušaje prijave. Obavezno evidentirajte sve greške i obavestite administratore o pokušaju napada.
  • Izbegavajte nepotrebno ograničavanje broja karaktera prilikom unosa. Ako dozvolite više znakova, manje su šanse da napadači pogode pravu lozinku.
  • Postavite neki oblik zaključavanja da biste sprečili Brute Force napade i ranjivost sveli na najmanju moguću meru.
  • Koristite prilagodljive hash algoritme kao što su bcrypt, pbkdf2, argon2, i sl
  • Implementirajte proveru slabe lozinke. Ovo bi uključivalo testiranje novih ili promenjenih lozinki i njihovo poređenje sa listom kompromitovanih ili slabih lozinki. Korišćenje servisa za proveru kompromitovanih lozinki (kao što je Have i Been Pwned) pomaže u automatizaciji ove funkcije i održava listu kompromitovanih lozinki ažurnom u slučaju novih napada.

Pogrešna konfiguracija sistema

Pogrešna konfiguracija sistema pruža napadačima lak pristup vašem web sajtu, što je čini jednom od najkritičnijih ranjivosti web aplikacija koje morate da predupredite.

Neiskorišćene stranice, nezakrpljeni propusti, nezaštićene datoteke i direktorijumi i podrazumevana (default) konfiguracija sistema su samo neki od propusta koje napadači mogu iskoristiti da bi dobili neovlašćeni pristup.

Ako napadači uspeju da iskoriste ove ranjivosti, mogu pristupiti osetljivim podacima i preuzeti kontrolu nad korisničkim i administratorskim nalozima.

Rešenje

  • Pobrinite se da uvek koristite HTTPS
  • Sve remote pristupe obavljajte putem zaštićenih kanala Čak i ako morate da koristite protokole koji ne podržavaju jaku enkripciju, uverite se da ste ih aktivirali preko sekundarnog kanala za šifrovanje kao što je IPSEC ili TLS.
  • Redovno proveravajte integritet datoteka kako biste bili sigurni da nije došlo do neovlašćenih promena kritičnih datoteka. Koristite alate za proveru integriteta datoteka koje mogu da vas upozore na sve neočekivane ili neuobičajene promene.
  • Implementirajte automatizovani proces za redovnu proveru efikasnosti vaših podešavanja i konfiguracija u svakom okruženju. Možete koristiti automatizovani alat za praćenje konfiguracije koji vas može upozoriti na bilo kakve neovlašćene promene. Ovo će vam pomoći da identifikujete ove ranjivosti web aplikacija i delujete preventivno.
  • Izbegavajte dodavanje nepotrebnih funkcija i komponenti. Ako na platformi imate neiskorišćene funkcije i framework-ove, najbolje je da ih uklonite kako biste sprečili ranjivosti web aplikacija.

XML External Entities

Ova vrsta napada je takođe poznata kao XXE, ili XML injection napad. Do njega dolazi kada napadači iskoriste loše konfigurisan XML parser.

Rešenje

  • Potpuno onemogućavanje Document Type Definisions (DTD), poznatih i kao External Entities je najsigurniji način za sprečavanje XXE napada. Ovo štiti parser od DoS napada. Međutim, nije uvek moguće potpuno onemogućiti DTD. U tom slučaju, potrebno je da onemogućite eksterne deklaracije tipa dokumenta i eksterne entitete na specifičan način za svaki parser.
  • Kad god je to moguće, pokušajte da koristite manje složene formate podataka kao što je JSON. Takođe je dobro izbegavati serijalizaciju osetljivih podataka da biste izbegli ove ranjivosti aplikacija na web sajtu.
  • Iako je najbolje rešenje manuelni pregled koda, za kritične funkcije u velikim i složenim aplikacijama, trebalo bi da koristite i SAST alate za otkrivanje XXE u izvornom kodu.
  • Koristite XSD validaciju ili ekvivalentnu alternativu da potvrdite ulaznu XML strukturu.

Neaktivna kontrola pristupa (neuspešna autorizacija)

Kontrola pristupa vam pomaže da upravljate pristupom određenim delovima web sajta i kojim sve aplikacijama korisnici / posetioci sajta mogu pristupiti.

Na primer, ako je vaš web sajt ujedno i e-commerce platforma za različite trgovce koji treba da prikažu svoje proizvode, biće im potrebna neka vrsta pristupa za dodavanje novih proizvoda i upravljanje njihovom online prodavnicom. Ipak, neće svakom posetiocu biti potreban takav nivo pristupa jer većina njih posećuje web sajt radi kupovine proizvoda.

Neispravna kontrola pristupa otvara vaš web sajt za ranjivosti, koje napadači mogu iskoristiti za pristup osetljivim informacijama ili neovlašćenim funkcijama. Oni čak mogu da koriste ove napade da naprave modifikacije prava pristupa i korisničkih podataka.

Rešenje

  • Najvažnije je da se pri razvoju i konfigurisanju softvera pridržavate security-first politike.
  • Obavezno primenite zaštitu i horizontalno (na sve podatke) i vertikalno (na sve nivoe privilegija pristupa). Vertikalna zaštita uključuje korištenje koncepta najmanje privilegije.
  • Centralizujte sve odluke o autorizaciji da biste umanjili pojavu ranjivosti web aplikacija koje imaju vezu sa pristupom.
  • Umesto da dozvolite korisnicima da slobodno kreiraju, čitaju, menjaju ili brišu bilo koji zapis, koristite kontrole pristupa modela da biste sproveli vlasništvo nad zapisima. Onemogućite im da čitaju ili menjaju podatke drugim korisnicima.
  • Postavite ograničenja za pristup API -ju i kontroleru kako biste smanjili rizik od napada pomoću automatizovanih alata.
  • Deaktivirajte JWT tokene i korisničke sesije na serveru nakon odjave.

Zaključak

U ovom tekstu smo objasnili kako sprečiti neke od najčešćih ranjivosti u web aplikacijama. U kombinaciji sa vašim redovnim testovima i automatizovanim skeniranjem naši saveti vam mogu pomoći da smanjite rizik od bezbednosnih pretnji i obezbedite bolju bezbednost osetljivih podataka.

Takođe, važno je napomenuti da ovo nisu jedine ranjivosti kojih treba da budete svesni. Postoji i mnogo drugih ranjivosti, ali o njima ćemo pisati u nekim od narednih tekstova na našem blogu.

 

Slični postovi:

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена.