Zraniteľnosť OAuth | Ako implementovať bezpečné povolenie vo vašej webovej aplikácii

Anonim
Zraniteľnosť OAuth | Ako implementovať bezpečné povolenie vo vašej webovej aplikácii 2740_1

Tento článok sa zaoberá známym zlosťou OAUTH. Čitatelia sa tiež dozvedia, ako implementovať bezpečné a bezpečné autorizáciu vo webovej aplikácii.

OAUTH je spoľahlivý protokol, ale jeho stupeň bezpečnosti vo veľkej miere závisí od povedomia webových vývojárov pri vykonávaní autorizácie. To robí túto tému mimoriadne dôležité pre profesionálov bezpečnostnej ochrany informácií. Musia poskytnúť vysokú úroveň ochrany účtov svojich používateľov. Je čas zoznámiť sa s účinnými praktizujúcimi, ktorí pomôžu znížiť nebezpečenstvo chudobného predaja oauth.

Úvod

Protokol OAUTH 2.0 je v súčasnosti široko používaný v rôznych aplikáciách. Použitie IT, pohodlné užívateľské rozhranie je k dispozícii, ľahšie overenie a autorizácia v porovnaní s tradičnými metódami pre zadanie používateľského mena a hesla. S riadnou a premyslenou implementáciou bude protokol OAUTH bezpečnejší ako tradičné autorizácia, pretože užívatelia nemusia zdieľať svoje účtovné údaje s aplikáciou tretej strany na prístup k konkrétnemu zdroju. Užívatelia často uprednostňujú prihlásenie pomocou svojich účtov Google, Facebook alebo LinkedIn, namiesto vytvorenia nového účtu zakaždým, keď sa musíte zaregistrovať na niektorých webových stránkach. Protokol OAUTH teda výrazne zjednodušuje naše životy.

Všeobecne platí, že populárne poskytovatelia služby OAUTH sú veľmi spoľahlivé. Prihláste sa pomocou účtu Google alebo Facebook inšpiruje určitý zmysel pre bezpečnosť a je správne. Protokol je starostlivo testovaný odborníkmi. Tím vývojár vždy rýchlo opravuje všetky dostupné zraniteľnosti. Stojí však za zmienku, že pocit úplnej bezpečnosti môže byť nepravdivý.

Poskytovatelia služieb OAUTH opustili vývojárov aplikácií veľa dôvodov, na ktoré sa vzťahuje bezpečnosť svojich programov. V skutočnosti sa spočiatku chránená služba OAUTH, nesprávne implementovaná v procese jeho inštalácie, sa môže stať jednoduchým cieľom pre votrelcov. Takáto preokpacnosť povedie k krádeži osobných údajov používateľov.

Ďalej by ste mali zvážiť najbežnejšie zraniteľnosti, ktoré sa vyskytli v aplikáciách tretích strán, ktoré implementujú protokol oauth, aby autorizovali svojich používateľov. Treba pripomenúť, že samotný protokol je bezpečný a spoľahlivý. Až po nesprávnom implementácii sa stáva zraniteľným útokom hackerov.

OAUTH TOPEKONAČNOSTI POUŽÍVAŤ HLAVNOSTI Referer

Keď žiadosť žiada o povolenie v mene používateľa na serveri OAUTH, osoba dostane kód na zadanie a odosielanie na server za jeho následnú kontrolu. Ak počas práce bude užívateľ presmerovaný na inú stránku, kód sa zobrazí v hlavičke "referer" na požiadanie HTTP. Kód bude teda spadnúť na externú webovú stránku, ktorá ohrozí používateľské údaje zaregistrované na serveri OAUTH.

POZNÁMKA: Hlavička referer je hlavičkou HTTP Query, prenáša hostiteľa URL, z ktorého je žiadosť odoslaná.

Ak chcete zjemniť následky tejto zraniteľnosti, vývojár musí zabezpečiť, aby jeho webová aplikácia neobsahovala žiadne injekcie HTML. Ak boli injekcie zistené, útočník môže ľahko nastaviť značku obrazu na svoj web server a nájsť spôsob, ako presmerovať používateľa na ňom. Dostane teda možnosť ukradnúť kód z hlavičky "referer" na požiadavku HTTP.

OAUTH TOCKEKE KREKOVATEĽA POUŽÍVANIA PREHRÁVAČOVACÍMA

Aplikácia iniciuje proces autorizácie zaslaním žiadosti o server OAUTH:

https://www.example.com/signin/authorize ?[...]&redirect_uri=httpps:///demo.example.com/loginsfulfulful.

Dotaz vždy obsahuje parameter "rediirect_uri", ktorý používa OAuth Server, aby poslal tokeny späť do aplikácie po tom, čo užívateľ dal svoj súhlas. Ak hodnota tohto parametra nie je kontrolovaná alebo nekontrolovaná, útočník ho môže ľahko zmeniť a presmerovať žiadosť na svoju webovú stránku, kde používa špeciálny program na spracovanie tokenu a získať prístup k obmedzeným zdrojom.

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

Niekedy sú blokované podobné adresy URL. Útočník môže presmerovať prijaté údaje o otvorenej adrese URL, takto:

https://www.example.com/oauth20_authorize.srf?[...[&redirect_uri=httpps://accountss.google.com/backtoouthsubtarget?Next=htttpt://evil.com.

Alebo toto:

https://www.example.com/oauth2/authorize? [...]% IRECT_URI = HTTPS% 3A% 2F% 2fapps.facebook.com% 2FATTACKER% 2F.

Pri implementácii OAuth môžete nikdy zahrnúť celé domény v bielom zozname. Do "Rediirect_uri" by sa malo pridať iba niekoľko URL, ktoré nie sú presmerované na požiadavku na otvorenie presmerovania.

Falšovanie cross-line požiadaviek

Falšovanie žiadosti o okolie sa môže vyskytnúť, keď útočník uspeje, aby obeť klikli na jeho odkaz, a teda vygenerovať žiadosť, že nebude generovať. Falšovanie cross-line požiadaviek je zvyčajne zmäkčiť s tokenom CSRF, ktorý je spojený s užívateľským reláciou. Pomáha aplikácii skontrolovať osobu osoby, ktorá žiadosť poslala. Parameter "State" v protokole OAUTH slúži ako CSRF token.

Stojí za to prezerať, ako sa útok CSRR vykonáva na OAuth a ako "stav" parameter môže byť použitý na zmiernenie účinkov zraniteľnosti.

Hacker otvára webovú aplikáciu a spúšťa proces autorizácie na prístup k poskytovateľovi služieb pomocou OAUTH. Žiadosť žiada poskytovateľa služieb, aby mal prístup, ktorý sa má poskytnúť. Hacker bude presmerovaný na webovú stránku poskytovateľa služieb, kde zvyčajne potrebujete zadať svoje používateľské meno a heslo na autorizáciu prístupu. Namiesto toho hacker chytí a zabraňuje tejto požiadavke a šetrí svoju adresu URL. Hacker nejako spôsobí, že obeť otvára túto adresu URL. Ak obeť zadala systém poskytovateľa služieb pomocou svojho účtu, potom sa jej poverenia použijú na vydanie autorizačného kódu. Autorizačný kód si vymieňa prístup k tokenu prístupu. Teraz je autorizovaný účet hackerov v žiadosti. Môže pristupovať k účtu obete.

Ako teda môžem zabrániť tomuto situácii pomocou parametra "State"?

Aplikácia musí vytvoriť hodnotu, ktorá je nejako založená na zdrojovom účte (napríklad použite kľúč hash používateľa). Nie je to tak dôležité, čo je, hlavnou vecou je, že hodnota je jedinečná a generovaná pomocou súkromných informácií o pôvodnom používateľovi. Je priradený k parametrovi "State".

Táto hodnota sa prenáša na poskytovateľa služieb pri presmerovaní. Teraz hacker pozýva obeť, aby otvorila adresu URL, ktorú si zachoval.

Kód autorizácie je vydaný a zaslaný späť k klientovi v relácii spolu s parametrom "State".

Klient vytvára hodnotu parametra na základe informácií o relácii a porovnáva ju s hodnotou "State", ktorá bola odoslaná späť z žiadosti o autorizáciu k poskytovateľovi služieb. Táto hodnota nezodpovedá parametrovi "State" v dotaze, pretože bol vytvorený len na základe informácií o aktuálnej relácii. Výsledkom je, že systém nie je prijatý systémom.

Iné zraniteľné miesta zistené pri implementácii OAUTH zahŕňajú schopnosť vykonávať XSS (cross-site skriptovanie) pomocou parametra "RediRirect_uri", nastavenie súkromného kľúča OAuth (Kľúč môže byť niekedy získané pri rozložení mobilnej aplikácie) a autorizačný kód porušenia pravidiel (kedy Autorizačný kód môže byť použitý viac ako raz, kým vydá viac prístupových tokenov). Tieto zraniteľné miesta sú menej bežné ako tie, ktoré sú opísané vyššie, ale nerobí ich menej nebezpečné. Developer by mal poznať všetky potrebné postupy, aby sa zabezpečila spoľahlivá prevádzka svojej webovej aplikácie.

Autor preloženého článku: Simon Saliba.

DÔLEŽITÉ! Informácie výlučne na akademické účely. Dodržiavajte právne predpisy a tieto informácie neplatia na nelegálne účely.

Zaujímavejší materiál na cisoclub.ru. Prihlásiť sa na nás: Facebook | VK | Twitter | Instagram | Telegram | Zen | Messenger | ICQ NOVÉ | YouTube | Pulz.

Čítaj viac