Zranitelnosti oauth | Jak implementovat bezpečné povolení ve vaší webové aplikaci

Anonim
Zranitelnosti oauth | Jak implementovat bezpečné povolení ve vaší webové aplikaci 2740_1

Tento článek se bude zabývat známými zranitelností oauth. Čtenáři se také naučí, jak implementovat bezpečné a bezpečné povolení v webové aplikaci.

OAuth je spolehlivý protokol, ale jeho stupeň bezpečnosti do značné míry závisí na povědomí o vývojářů webu při provádění povolení. Díky tomu je toto téma nesmírně důležité pro profesionály zabezpečení informací. Potřebují poskytovat vysokou úroveň ochrany účtů jejich uživatelů. Je na čase seznámit se s účinnými praktikami, kteří pomohou snížit nebezpečí špatného prodeje OAuth.

Úvod

OAuth 2.0 Protokol je v současné době široce používán v různých aplikacích. Pomocí něj je k dispozici pohodlné uživatelské rozhraní, snadnější ověřování a autorizaci ve srovnání s tradičními metodami pro zadání uživatelského jména a hesla. S řádnou a promyšlenou implementací bude protokol oauth bezpečnější než tradiční povolení, protože uživatelé nemusí sdílet své účetní údaje s aplikací třetích stran přístup k konkrétnímu zdroji. Uživatelé často dávají přednost přihlášení pomocí svých účtů Google, Facebook nebo LinkedIn, místo vytvoření nového účtu pokaždé, když se musíte zaregistrovat na některých webových stránkách. Protokol OAuth tak výrazně zjednodušuje naše životy.

Obecně platí, že populární poskytovatelé služeb OAuth jsou velmi spolehlivé. Přihlaste se pomocí účtu Google nebo Facebook inspiruje určitý smysl pro bezpečnost a je správný. Protokol je pečlivě testován odborníky. Všechny dostupné zranitelnosti jsou vždy rychle opraveny vývojářem. Stojí však za zmínku, že pocit úplné bezpečnosti může být nepravdivý.

Poskytovatelé služeb OAuth opustili vývojáře aplikací mnohem důvodů, aby mohli obsahovat bezpečnost svých programů. Ve skutečnosti, původně chráněná služba OAuth, nesprávně implementovaná v procesu jeho instalace, se může stát snadným cílem pro vetřelce. Taková zacestace povede k krádeži osobních údajů uživatelů.

Dále byste měli zvážit nejběžnější chyby zabezpečení v aplikacích třetích stran, které provádějí protokol oauth, aby povolili své uživatele. Je třeba mít na paměti, že protokol sám je bezpečný a spolehlivý. Pouze po nesprávné implementaci se stává zranitelným pro útoky hackerů.

Oauth tockkey krádeže pomocí záhlaví referentů

Když aplikace žádá o autorizaci jménem uživatele na serveru OAuth, osoba obdrží kód pro zadávání a odesílání zpět na server pro jeho následnou kontrolu. Pokud během práce bude uživatel přesměrován na jinou stránku, bude kód zobrazen v záhlaví "refereru" požadavku http. Kodex tak bude spadat na externí web, který ohrožuje uživatelská data registrovaná na serveru OAUTH.

Poznámka: Záhlaví referentů je záhlaví dotazu HTTP, přenáší hostitele URL, ze kterého je požadavek odeslán.

Chcete-li změkčit důsledky této chyby zabezpečení, vývojář se musí ujistit, že jeho webová aplikace neobsahuje žádné injekce HTML. Pokud byly zjištěny injekce, útočník může snadno nastavit značku obrázku na svůj webový server a najít způsob, jak přesměrovat uživatele na něj. Tak, on dostane příležitost ukrást kód z hlavičky "refereru" požadavku http.

Oauth tockkey krádeže pomocí parametru redirect_uri

Aplikace iniciuje proces autorizace odesláním požadavku na server OAUTH:

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

Dotaz vždy obsahuje parametr "redirect_uri" používaný serverem oauth, aby odesílal tokeny zpět do aplikace poté, co uživatel dal svůj souhlas. Pokud hodnota tohoto parametru není kontrolována nebo není kontrolována, může útočník snadno změnit a přesměrovat požadavek na své webové stránky, kde používá speciální program pro zpracování tokenu a získat přístup k omezenému zdroji.

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

Někdy jsou blokovány podobné adresy URL. Útočník může přesměrovat přijaté údaje o otevřené adrese URL, jako je tento:

https://www.example.com/oauth20_Authorize.srf?[...[...[&redirect_uri=httppps://accounts.google.com/backtoouthsubtarget?nextmouthttpttpsset:///vil.com.

Nebo toto:

https://www.example.com/oauth2/authorize? [...]% irect_uri = https% 3A% 2f% 2fapps.facebook.com% 2Fattacker% 2f.

Při implementaci OAuth můžete nikdy obsahovat celé domény v bílém seznamu. Pro "redirect_uri" by mělo být přidáno pouze několik adres URL, není přesměrováno požadavek na otevření přesměrování.

Odstarání křížových požadavků

Odpadání žádosti o míč může nastat, když útočník uspěje, aby se obětí proklikou jeho odkaz, a proto generovat žádost, že nebude generovat. Odpadky cross-line požadavků je obvykle změkčeno s tokenem CSRF, který je spojen s relací uživatele. Pomáhá aplikaci zkontrolovat osobu osoby, která žádost poslala. Parametr "Stát" v protokolu OAuth slouží jako CSRF token.

Stojí za to, jak se útok CSRF provádí na OAuth a jako parametr "State" může být použit pro zmírnění účinků zranitelnosti.

Hacker otevírá webovou aplikaci a spustí proces autorizace pro přístup k poskytovateli služeb pomocí OAuth. Aplikace žádá poskytovatel služeb k přístupu, který je třeba poskytnout. Hacker bude přesměrován na webové stránky poskytovatele služeb, kde obvykle potřebujete zadat své uživatelské jméno a heslo pro autorizaci přístupu. Místo toho hacker chytí a zabrání tomuto požadavku a uloží svou adresu URL. Hacker nějak způsobí, že oběť otevřete tuto adresu URL. Pokud oběť vstoupila do systému poskytovatele služeb pomocí svého účtu, pak jeho pověření bude použita k vydání autorizačního kódu. Autorizační kód výměny přístupu k přístupovému tokenu. Nyní je autorizován účet Hacker v aplikaci. Může přistupovat k účtu oběti.

Jak tedy mohu zabránit této situaci pomocí parametru "State"?

Aplikace musí vytvořit hodnotu, která je nějakým způsobem založena na zdrojovém účtu (například používat klávesu Hash relace uživatele). Není to tak důležité, co to je, hlavní věc je, že hodnota je jedinečná a generována pomocí soukromých informací o původním uživateli. Je přiřazen parametru "State".

Tato hodnota je přenášena do poskytovatele služeb při přesměrování. Nyní hacker zve oběť, aby otevřela adresu URL, kterou si zachoval.

Autorizační kód je vydán a odeslán zpět do klienta v relaci spolu s parametrem "State".

Klient generuje hodnotu parametru na základě informací o relaci a porovnává ji s hodnotou "Stav", která byla odeslána zpět z žádosti o autorizaci do poskytovatele služeb. Tato hodnota neodpovídá parametru "Stav" v dotazu, protože byl generován pouze na základě informací o aktuální relaci. Výsledkem je, že získaná hodnota není systémem přijata.

Jiné chyby zabezpečení při implementaci OAuth zahrnují schopnost provádět XSS (skriptování křížového místa) pomocí parametru "Redirect_URI", nastavení privátního klíče OAuth (klíč může být někdy získáno při dekompilaci mobilní aplikace) a porušení pravidla pro autorizační kód (kdy Autorizační kód může být použit více než jednou pro vydání více přístupových toků přístupu). Tyto zranitelnosti jsou méně časté než výše popsané výše, ale nečiní je méně nebezpečné. Developer by měl znát všechny potřebné postupy, které zajistí spolehlivý provoz jeho webové aplikace.

Autorem přeloženého článku: Simon Saliba.

Důležité! Informace pouze pro akademické účely. Dodržujte prosím právní předpisy a tyto informace nepoužívejte pro nezákonné účely.

Zajímavější materiál na cisoclub.ru. Přihlásit se k nám: Facebook | VK | Twitter | Instagram | Telegram | Zen | Messenger | ICQ New | YouTube | Puls.

Přečtěte si více