Identification and Authentication Failures - Ruzica74/sigurnost GitHub Wiki

Identification and Authentication Failures

Šta su identifikacioni i autentifikacioni otkazi?


Identifikacija i autentifikacija predstavljaju dva najvažnija procesa prilikom prijavljivanja korisnika na svoj nalog u okviru određene aplikacije. Identifikacija podrazumijeva da aplikacija treba da prepozna korisnika i ta radnja se prva odvija. Nakon toga aplikacija treba da utvrdi da li je korisnik taj za koga tvrdi da jeste, tj. da izvrši autentifikaciju. Identifikacioni otkazi ukazuju na nemogućnost aplikacije da ispravno identifikuje korisnika, dok autentifikacioni otkazi označavaju nedostatak sposobnosti aplikacije da potvrdi identitet korisnika za onog za koga se izdaje da jeste.

Primjeri identifikacionih i autentifikacionih otkaza jesu ako aplikacija dozvoli sljedeće: automatizovane napade punjenjem pristupnih kredencijala, brut force napade na kredencijale, korištenje dobro poznatih ili slabih šifri od strane korisnika itd. Aplikacije mogu imati identifikacione i autentifikacione otkaze u slučaju da: prikazuju ID sesiju u URL-u, više puta koriste jedan ID za praćenje sesije, ne stavlja ID sesije u neaktivno stanje na adekvatan način, čuva lozinku u izvornom obliku ili koristi slabe hash funkcije za čuvanje lozinke itd.


Opis problema (Napad punjenjem pristupnih kredencijala - credential stuffing)

Korisnici često znaju da koriste iste parove korisničkog imena i šifre za različite naloge, tj. u različitim aplikacijama. Ako napadači dođu u posjed tih kredencijala oni mogu da pokušaju da ih iskoriste i u login formama drugih aplikacija, te mogu zloupotrijebiti tuđe naloge.

Na Slici 1. je ilustrovan credential stuffing napad. Iz baze podataka website-a acme.com su ukradeni kredencijali. Napadač uzima kredencijale i pokušava sa njima da se uloguje na tri različita website-a, u potrazi za uspješnim logovanjem. Na dijagramu je prikazano da u ovom slučaju u prvoj aplikaciji postoji jedno uspješno prijavljivanje, dok u drugoj aplikaciji postoje dva uspješna prijavljivanja i u trećoj aplikaciji nema uspješnih prijavljivanja. Zahvaljujući ponavljanju kredencijala napadač sada može da pristupi tri različita naloga.

Slika 1.

Napadači mogu doći u posjed kredencijala phishing napadima ili na osnovu data breach-a. Phishing napadi (napadi ribarenja) upotrebljavaju prevarantske metode da bi došli do osjetljivih podataka kao što su korisničko ime i šifra, bankovni podaci i drugi lični podaci. Često se upotrebljavaju lažni email-ovi, poruke ili website-ovi, koji su maskirani da izgledaju kao legitimni i manipulišu ciljane pojedince. Neki od primjera jesu kada napadač šalje email ili poruku koja dolazi navodno od poznatih ili legitimnih izvora i sadrže uznemiravajuće podatke i navode primaoca da klikne na link ili da neke osjetljive podatke. Linkovi mogu da vode i do login-a za odabranu aplikaciju od strane napadača, koja djeluje kao da je legitimna, međutim kreirana je od strane napadača da bude što vjerodostojnija i služi za preuzimanje kredencijala. Dok data breach (curenje podataka) predstavlja predočavanje privatnih, povjerljivih ili na drugi način osjetljivih podataka u nesigurno okruženje, do čega može doći slučajno ili planiranim napadom. Velike korporacije su glavne mete ovih napada, zbog količine podataka koje mogu da se izvuku, ali i manji sistemi mogu biti meta napada jer uglavnom se nađu kupci za sve vrste ukradenih podataka.

Nakon što je napadač došao došao u posjed ukradenih kredencijala, može i da ih isproba na aplikaciji DocumentSystem. Ako je neki korisnik upotrijebio isto korisničko ime i lozinku koje koristi na DocumentSystemu i na drugoj aplikaciji, čiji su kredencijali ukradeni, dolazi do problema. Ukoliko prijava bude uspješna, napadač zna da ima set validnih kredencijala, te može da vrši sve aktivnosti kao i korisnik na čijem nalogu se nalazi.

Posljedice problema

Napadač može da uradi sve što i korisnik može da uradi unutar aplikacije DocumentSystem, to zavisi od role korisnika unutar sistema. Role korsnika i odgovarajuće aktivnosti u sistemu su prethodno opisane. Što je veća odgovornost role, to su mogućnosti veće. Osim toga što ima pristup sistemu, napadač može potencijalno da proda kredencijale da bi ga mogli koristiti i drugi napadači, kao dobro poznate kredencijale.

Rješenja problema

Prvenstvena mjera zaštite je višefaktorska autentifikacija. Ona podrazumijeva da se obezbijede dva ili više verifikacionih faktora da bi korisnik dobio pristup nalogu aplikacije. Pored korisničkog imena i šifre potrebno je dostaviti još jedan ili više metoda identifikacije. Potrebno je da dodati verifikacioni faktor koji spada u razlićitu grupu autetifikacionih metoda. Postoje tri glavna faktora u višefaktorskoj autentifikaciji:

  • Nešto što osoba zna - to je obično lozinka ili pin (prikazan unos lozinke kao prvi korak na Slici 2).
  • Nešto što osoba posjeduje - to može biti fizički uređaj, kao što je pametni telefon na koji će primiti jednokratni kod (prikazano kao drugi korak na Slici 2).
  • Nešto što osoba jeste - uključuje biometriju, a može biti: otisak prsta, skeniranje mrežnjače ili prepoznavanje lica (prikazano očitavanje otiska prsta kao treći korak na Slici 2). Kada se kombinuju dva ili više faktora jako je teško da napadač uspije da se uspješno prijavi na nalog nekog korisnika čak iako zna kredencijale. Postavlja se dodatni sloj zaštite i prijavljivanje na aplikaciju postaje komplikovanije.

Slika 2.

U aplikaciju DocumentSystem je naknadno dodata dvofaktorska autentifikacija, gdje prvi faktor autentifikacije prestavljaja unošenje korisničkog imena i šifre (Slika 3), a drugi faktor je unošenje jednokratnog tokena koji je korisnik dobio putem SMS poruke na pametni telefon (Slika 4). Na Slici 5. je prikazan format jednokratnog tokena u vidu osam simbola (obuhvata alfabet i cifre 0-9), koji se dobije putem SMS poruke.

Slika 3.

Slika 4.

Slika 5.

Na Slici 6. prikazan je isječak koda sa backend-a, gdje se nalazi kontroler koji šalje SMS poruku korisniku. Nakon što je korisnik uspješno unio korisničko ime i lozinku poziva se endpoint sendSms. Poruka se šalje pozivanjem Twilio servisa na kojem je registrovan broj sa kojeg aplikacija šalje token. Korisnik dobija token na svoj pametni telefon (Slika 4), te ga unosi u formu prikazanu na Slici 3.

Slika 6.

Pored višefaktorske autentifikacije, postoji još mehanizama da se preventiriraju identifikacioni i autentifikacioni otkazi, kao što su politike o lozinkama, generalne poruke o greškama, ograničavanje pokušaja prilikom prijavljivanja itd. Svakako korisnici ne bi trebalo da koriste iste kredencjale na više naloga, kako bi se smanjila šteta u slučaju da napadač dođe u posjed kredencijala. Politike o lozinkama zahtjevaju od korisnika da se drže određenih pravila kako bi njihov nalog bio što sigurniji. Neke od preporuka za lozinke mogu biti sledeće:

  • da sadži miks velikih i malih slova, brojeva, znakova interpunkcije i simbola,
  • da se sastoji od minimalno 15 karaktera,
  • da bude jedinstvena u odnosu na sve druge naloge koje posjeduje korisnik,
  • da se ne koriste uobičajene fraze za pristup i
  • da se ne koriste obrasci karaktera.

Takođe, greške o porukama tokom procesa prijavljivanja trebaju biti jasno i koncizno formulisane. Kada dođe do greške prilikom prijave poruka treba da informiše korisnika šta je pošlo po zlu, bez da da dodatne informacije koje bi napadač potencijalno mogao zloupotrijebiti. Ako je riječ o većim sistemima koji se koriste u poslovne svrhe, tada i edukacija korisnika može biti važan faktor u prevenciji autentifikacionih i identifikacionih otkaza.