Ranjivosti Oauth | Kako implementirati sigurnu autorizaciju u vašoj web aplikaciji

Anonim
Ranjivosti Oauth | Kako implementirati sigurnu autorizaciju u vašoj web aplikaciji 2740_1

Ovaj se članak bavilo poznatim OAUT-ovim ranjivostima. Čitatelji će takođe naučiti kako implementirati sigurnu i sigurnu autorizaciju u web aplikaciji.

OAUG je pouzdan protokol, ali njegov stupanj sigurnosti u velikoj mjeri ovisi o svijesti o web programerima prilikom provođenja autorizacije. To čini ovu temu izuzetno važnom za informacijske sigurnosne stručnjake. Oni moraju pružiti visok nivo zaštite računa svojih korisnika. Vrijeme je da se upoznaju sa efikasnim praktičarima koji će pomoći u smanjenju opasnosti od lošeg prodaje Oauth.

Uvođenje

OAUT 2.0 Protokol se trenutno koristi u različitim aplikacijama. Koristeći ga, prikladno korisničko sučelje postaje dostupno, lakša provjera autentičnosti i autorizacije u odnosu na tradicionalne metode za unošenje korisničkog imena i lozinke. Uz pravilnu i promišljenu provedbu, OAUT protokol bit će sigurniji od tradicionalnog odobrenja, jer korisnici ne trebaju dijeliti svoje računovodstvene podatke pomoću aplikacije treće strane za pristup određenom resursu. Korisnici se često radije prijave koristeći svoje Google račune, Facebook ili LinkedIn, umjesto da kreiraju novi račun svaki put kada trebate se registrirati na nekoj web stranici. Dakle, oauth protokol uvelike pojednostavljuje naš život.

Općenito, popularni pružatelji usluga OAUG-a vrlo su pouzdani. Prijavite se s Google ili Facebook nalogom nadahnjuje određeni osjećaj sigurnosti i tačan je. Protokol pažljivo testiraju stručnjaci. Sve dostupne ranjivosti u programeru uvijek brzo ispravljaju program programera. Međutim, vrijedi napomenuti da se osjećaj potpune sigurnosti može biti lažan.

Oauth pružatelji usluga ostavili su programere aplikacija puno razloga za podnošenje sigurnosti svojih programa. U stvari, prvobitno zaštićena oauth usluga, pogrešno implementirana u procesu njegove instalacije, može postati lagan cilj za uljeze. Takva preokupacija dovest će do krađe ličnih podataka korisnika.

Zatim biste trebali razmotriti najčešće ranjivosti na kojima se nailazi na treće strane koje implementiraju OAUTH protokol za autorizaciju svojih korisnika. Mora se imati na umu da je sam protokol siguran i pouzdan. Tek nakon pogrešne implementacije postaje ranjiva na hakerskim napadima.

Krađa OAUTH Tockey pomoću zaglavlja filma

Kada aplikacija zahtijeva autorizaciju u ime korisnika na OAUT-u poslužitelju, osoba prima kôd za ulazak i slanje na poslužitelju za svoj sljedeći ček. Ako tokom rada korisnik će biti preusmjeren na drugu stranicu, kôd će se vidjeti u zaglavlju "Refreera" HTTP zahtjeva. Dakle, kod će pasti na vanjskoj web stranici, koja će prijetiti korisnički podaci registrirani na OAUT-u poslužitelju.

NAPOMENA: Glava za reflekT je HTTP zaglavlje upita, prenosi URL host iz kojeg se zahtjev šalje.

Za ublažavanje posljedica ove ranjivosti, programer mora osigurati da njegova web aplikacija ne sadrži HTML injekcije. Ako su otkrivene injekcije, napadač može lako postaviti oznaku slike na svoj web poslužitelj i pronaći način da preusmjerite korisnik na njemu. Dakle, dobit će priliku da ukrade kod iz zaglavlja "Refreera" HTTP zahtjeva.

Krađa OAUTH tockey pomoću parametra preusmjeravanja_uri

Aplikacija pokreće postupak autorizacije slanjem zahtjeva OAUT-u poslužitelju:

https://www.example.com/signin/authorize? evidence...Sense&redirect_uri=httpps://demo.example.com/loginsuccessful.

Upit uvijek sadrži parametar "Redirect_uri" koji koristi oauth server da pošalje tokene natrag na aplikaciju nakon što korisnik je dao svoj pristanak. Ako se vrijednost ovog parametra ne kontrolira ili ne provjerava, napadač ga može lako promijeniti i preusmjeriti zahtjev na svoju web stranicu, gdje koristi poseban program za obradu tokena i dobit je pristup ograničenom resursu.

https://www.example.com/signin/authorize? evideuse...Sense&redirect_uri=httpps://localhost.evil.com.

Ponekad su slični URL-ovi blokirani. Napadač može preusmjeriti primljene podatke na otvorenom URL-u, poput ove:

https://www.example.com/oauth20_authorize.srf? evidence... evidence&redirect_uri=httpps://accounts.google.com/bccouthsubtarget?next=httpset://evil.com.

Ili ovo:

https://www.example.com/oauth2/authorize? [...]% IRect_uri = https% 3a% 2f% 2fapps.facebook.com% 2fattacker% 2f.

Prilikom implementacije OAUGH-a nikada ne možete uključiti čitave domene na bijeloj listi. Treba dodati samo nekoliko URL-ova u "Redirect_uri" nije preusmjeren zahtjev za otvaranje preusmjeravanja.

Krivotvorenje unakrsnim zahtjevima

Fallity of Insegght Zahtjev može se pojaviti kada napadač uspije natjerati žrtvu da klikne na njegovu vezu i na taj način da generira zahtjev da ne ide generirati. Falsifikovanje unakrsnim zahtjevima obično se omekšava pomoću CSRF tokena, koji je povezan s korisničkom sesijom. Pomaže aplikaciji da provjeri osobu osobe koja je poslala zahtjev. Parametar "država" u OAUT-u protokolu služi kao CSRF token.

Vrijedno je gledati kako se napad CSRF-a vrši na OAUG-u i kako se "državni" parametar može koristiti za ublažavanje efekata ranjivosti.

Hacker otvara web aplikaciju i pokreće postupak autorizacije za pristup davatelju usluga pomoću OAUG-a. Aplikacija zahtijeva davatelja usluga za pristup koji treba osigurati. Haker će biti preusmjeren na web stranicu pružatelja usluga, gdje obično trebate unijeti svoje korisničko ime i lozinku za autorizaciju pristupa. Umjesto toga, haker hvata i sprečava ovaj zahtjev i sprema svoj URL. Haker nekako uzrokuje da žrtva otvori ovaj URL. Ako je žrtva ušla u sistem pružatelja usluga koristeći svoj račun, tada će se njegove vjerodajnice koristiti za izdavanje autorizacijskog kodeksa. Zamjena autorizacije razmjenjuje pristup pristupnom tokenu. Sada je obračun hakera u aplikaciji ovlašten. Može pristupiti računu žrtve.

Dakle, kako mogu spriječiti ovu situaciju koristeći "državni" parametar?

Aplikacija mora stvoriti vrijednost koja se nekako temelji na izvornom računu (na primjer, koristite ključ korisnika korisnika). Nije toliko važno što je, glavna stvar je da je vrijednost jedinstvena i generirana korištenjem privatnih podataka o izvornom korisniku. Dodijeljen je parametru "državi".

Ova vrijednost prenosi se dobavljaču usluga prilikom preusmjeravanja. Sada haker poziva žrtvu da otvori URL, koji je zadržao.

Autorizacijski kôd izdaje se i vraća klijentu na sednicu zajedno sa "državnim" parametrom.

Klijent generira vrijednost parametra na temelju podataka o sesiji i uspoređuje ga sa "državnom" vrijednošću, koja je poslana iz zahtjeva za autorizaciju dobavljaču usluga. Ova vrijednost ne odgovara parametru "državi" u upitu, jer je generiran samo na osnovu podataka o trenutnoj sesiji. Kao rezultat toga, sustav nije prihvaćen dobivena vrijednost.

Ostale ranjivosti otkrivene prilikom implementacije OAUG-a uključuju mogućnost izvođenja XSS-a (poprečna skriptiranja) pomoću parametra "Redirect_uri", postavku privatnog ključa OAUG (tipka se ponekad može dobiti prilikom dekompiravanja mobilne aplikacije) i povrede autorizacije (kada Autorizacijski kôd može se koristiti više puta više od jednom za izdavanje višestrukih tokena). Te su ranjivosti manje uobičajene od gore opisanih, ali ne čini ih manje opasnim. Programer bi trebao znati sve potrebne prakse kako bi se osigurao pouzdan rad njegove web aplikacije.

Autor prevedenog članka: Simon Saliba.

Bitan! Informacije isključivo u akademske svrhe. Molimo u skladu sa zakonodavstvom i ne primjenjujte ove podatke u ilegalne svrhe.

Zanimljiviji materijal na cisoclub.ru. Pretplatite se na nas: Facebook | VK | Twitter | Instagram | Telegram | Zen | Messenger | ICQ NOVO | YouTube | Puls.

Čitaj više