Security misconfigurations - Ruzica74/sigurnost GitHub Wiki
Security misconfigurations
Šta su bezbjednosne greške u konfiguraciji?
Prilikom konfigurisanja sistema mogu se javiti razne greške ili previdi i to na različitim nivoima, uključujući baze podataka, web servere, operativni sistem i napisani kod. Napadači mogu da eksploatišu načinjene greške i ugroze povjerljivost i integritet sistema, te mogu uticati na dostupnost usluga i podataka, koje pruža sistem.
Najčešće greške u konfiguraciji sistema su korištenje software sa poznatim ranjivostima, ostavljanje defaultnih podešavanja, ostavljanje nepotrebnih servisa i portova da rade, slabe lozinke, neispravna CORS podešavanja itd. Software sa poznatim ranjivostima, koje nisu još popravljene u vidu ažuriranja ili patch-a, ostavlja prostor malicioznom korisniku da iskoristi te nedostatke. Na Slici 1. je ilustrovano kako napadač može da iskorisiti ostavljena defaultna (uobičajena) podešavanja, do lako može doći. Ukoliko se ostave servisi i portovi koji u suštini nisu potrebni za funkcionisanje sistema, to daje dodatni prostor napadaču da izvrši napad. Moguće je da su se ti servisi ili portovi koristili u prošlosti ili za potrebe razvoja, te njihovim neutralisanjem sada kada više nisu potrebni smanjuje potencijalni izvor za eksploataciju. Neispravna CORS (Cross-Origin Resource Sharing) podešavanja mogu dovesti aplikaciju u opasnost od XSS (Cross-Site Scripting) napada tako što dozvoljavaju neplanske zahtjeve sa više izvora.
Slika 1.
Opis problema (Ostavljanje defaultnih kredencijala)
Unutar aplikacije DocumentSystem postoji više vrsta korisnika: administrator sistema, administrator dokumenata i klijent. Najveće privilegije u radu sa korisnicima posjeduje aministrator sistema. Kao i većina sistema i ovaj sistem ima administratorski nalog. Kada se kreira novi nalog često se dodjeljuju defaultni, tj. uobičajeni kredencijali koji bi trebali da olakšaju inicijalni pristup aplikaciji. Dobra praksa je da se nakon prvog logovanja ti kredencijali promjene, međutim, ako sama aplikacija ne tjera korisnika da to uradi, nerijetko se dešava da korisnici ostave takve kredencijale. Zbog toga su se javile liste defaultnih kredencijala za široko rasporostranjene sistemi kao što su Cisco, Canon, Gitlab itd. Takođe, ovo je česta pojava i kod naloga za uređaje, pogotovo Internet of Things uređaji. Jedna od tih listi se može pronaći na sledećem linku https://github.com/ihebski/DefaultCreds-cheat-sheet/blob/main/DefaultCreds-Cheat-Sheet.csv. Najčešće korištene kombinacije su prikazane na Slici 2.
Slika 2.
Kada se radi o aplikacijama, koje nisu široko rasprostranjene i nema lista poznatih podrazumijevanih kredencijala, napadač može se pokušati pogoditi uobičajene kredencijale. Imajući u vidu koji su to najčešće kombinacije koje se koriste u drugim aplikacijama, brut-force metodom može da iskorititi te kredencijali sa nadom da će neki od njih odgovarati. Pokušajem i greškom će unositi korisničko ime i lozinke dok ne dođe do tačne kombinacije ili dok je to izvodivo. Generalno napadač treba imati na umu da aplikacija može imati politiku zaključavanja naloga, ako se za postojeće korisničko ime više puta unese netačna lozinka. U tom slučaju može se zaključiti da se desio pokušaj napada i potrebno je resetovati nalog. Sa druge strane neke aplikacije imaju opširne poruke o grešci prilikom logovanja. Tako da je moguće da stranice za prijavu obavjeste korisnike, među njima i napadača, da su unijeli pogrešnu šifru. Na taj način napadač je siguran da postoji nalog sa tim korisničkim imenom i treba da pronađe još lozinku da bi imao pristup sistemu.
Na Slici 3. prikazano je da postoji administratorski nalog koji ima korisničko ime admin. Lozinka je, takođe admin, što potvrđuje Slika 4. u kojoj je prikazana riječ admin heširana Bcrypt hešing funkcijom, koja se koristi u bazi podataka za zaštitu lozinke, kako se ne ni čuvala u plain text-u. Pošto kredencijali nisu promijenjeni, ako napadač pokuša kombinaciju kredencijala 'admin - admin', moći će da pristupi aplikaciji sa administratorskim pravima.
Slika 3.
Slika 4.
Posljedice problema
Napadač je saznao korisničko ime i lozinku administratorskog naloga, te može sa njim da se prijavi na aplikaciju i izvršava sve što je dopušteno i administratoru. U slučaju DocumentSystem aplikacije prava administratora sistema jeste pregled repozitorijuma, pregled istorije korisničkih akcija i preuzimanje pojedinačnih dokumenata. Administrator sistema sa istim nalogom može da se prijavi na web aplikaciju Korisnici, kojoj samo ova rola može da pristupi. U okviru ove aplikacije administrator sistema može da upravlja korisničkim nalozima (što podrazumijeva pregledanje, kreiranje, brisanje i izmjenu naloga), da podešava korijenske direktorijume drugih grupa korisnika (klijent i administrator dokumenata) i da podesi za klijenta sa koje IP adrese/domena može da pristupi web aplikaciji DocumentSystem i koje akcije može da vrši nad dokumentima (CRUD operacije). Na Slici 5. prikazan je izgled web aplikacije Korisnici u kojoj administrator sistema ima privilegije.
Slika 5.
Rješenja problema
Kada se koristi aplikacija sa nebjzbjednim podrazumijevanim podešavanjima, bezbjednosne opcije nisu definisane na taj način da se maksimizira bezbjednost. Veća pažnja se mora posvetiti samoj konfiguraciji aplikacija. Problem se može riješiti tako što će se kredencijali za administratorski nalog što prije promijeniti, tako ne spadaju u ona korisnička imena i lozinke koji se često koriste i lako se mogu pogoditi. Poželjno je da se ne koriste uopšte podrazumijevani kredencijali ili ako se koriste da aplikacija natjera korisnika da promijeni kredencijale prilikom prvog logovanja. Dobra prevencija je i zaključavanje naloga nakon više unošenja netačne lozinke za postojeći korisnički nalog. Time se nameće dodatna aktivnost otključavanja naloga, u slučaju da se to desi. Rizici, koje donosi pogrešna konfiguracija, među kojima je ostavljanje podrazumijevanih kredencijala, predstavljaju prijetnju po čitav sistem. Pogrešna konfiguracija je ranjivost koja se lako cilja i ako postoji, može se na prilično jednostavan način otkiti.