Kwetsbaarheden OAUTH | Hoe u veilige autorisatie kunt implementeren in uw webtoepassing

Anonim
Kwetsbaarheden OAUTH | Hoe u veilige autorisatie kunt implementeren in uw webtoepassing 2740_1

Dit artikel gaat over de bekende OAUTH-kwetsbaarheden. Lezers zullen ook leren hoe u veilige en veilige autorisatie kunt implementeren in de webtoepassing.

OAUTH is een betrouwbaar protocol, maar de beveiliging van de veiligheid hangt grotendeels af van het bewustzijn van webontwikkelaars bij het implementeren van autorisatie. Dit maakt dit onderwerp uiterst belangrijk voor professionals informatiebeveiliging. Ze moeten een hoog niveau van bescherming van hun gebruikers bieden. Het is tijd om kennis te maken met effectieve beoefenaars die het gevaar van slechte verkopende oauth helpen verminderen.

Invoering

OAUTH 2.0-protocol wordt momenteel op grote schaal gebruikt in verschillende toepassingen. Het gebruik ervan wordt een handige gebruikersinterface beschikbaar, eenvoudiger authenticatie en toestemming in vergelijking met traditionele methoden voor het invoeren van de gebruikersnaam en het wachtwoord. Met de juiste en doordachte implementatie is het OAUTH-protocol veiliger dan traditionele autorisatie, aangezien gebruikers hun boekhoudgegevens niet hoeven te delen met een aanvraag van derden om toegang te krijgen tot een specifieke bron. Gebruikers geven er vaak in om in te loggen met behulp van hun Google-accounts, Facebook of LinkedIn, in plaats van een nieuw account aan te maken telkens wanneer u zich op een website wilt registreren. Het OAUTH-protocol vereenvoudigt dus aanzienlijk ons ​​leven.

In het algemeen zijn populaire OAUTH-serviceproviders zeer betrouwbaar. Log in met Google of Facebook-account inspireert een bepaald gevoel van beveiliging, en het is correct. Het protocol wordt zorgvuldig getest door experts. Alle beschikbare kwetsbaarheden worden altijd snel gecorrigeerd door het ontwikkelaarsteam. Het is echter vermeldenswaard dat het gevoel van volledige veiligheid onjuist kan zijn.

OAUTH-serviceproviders hebben veel redenen van toepassing ontwikkelaars om de veiligheid van hun programma's te betogen. In feite kan de initieel beschermde OAUTH-service, onjuist geïmplementeerd in het proces van de installatie, een eenvoudig doelwit voor indringers worden. Een dergelijk preoccupacy zal leiden tot de diefstal van persoonlijke gegevens van gebruikers.

Vervolgens moet u rekening houden met de meest voorkomende kwetsbaarheden die zijn aangetroffen in applicaties van derden die OAuth-protocol implementeren om hun gebruikers toe te staan. Er moet aan worden herinnerd dat het protocol zelf veilig en betrouwbaar is. Alleen na een onjuiste implementatie wordt het kwetsbaar voor hacker-aanvallen.

OAUTH TOKKETE DIEFSTELT DIE DE KEER VAN DE REFERENTER GEBRUIKEN

Wanneer de applicatie namens de gebruiker op de OAUTH-server verleent, ontvangt een persoon de code om in te voeren en terug te sturen naar de server voor de daaropvolgende controle. Als tijdens het werk de gebruiker wordt omgeleid naar een andere pagina, wordt de code gezien in de header van de "referentier" van het HTTP-verzoek. Aldus valt de code op de externe website, die de gebruikersgegevens op de OAUTH-server bedreigt.

Opmerking: de kop van de referentierader is een HTTP-query header, het verzendt de URL-host waarvan het verzoek wordt verzonden.

Om de gevolgen van deze kwetsbaarheid te verzachten, moet de ontwikkelaar ervoor zorgen dat de webtoepassing geen HTML-injecties bevat. Als de injecties werden gedetecteerd, kan de aanvaller de afbeelding-tag eenvoudig instellen op de webserver en een manier vinden om de gebruiker erop om te leiden. Zo krijgt hij de mogelijkheid om de code van de header van de "referentier" van het HTTP-verzoek te stelen.

OAUTH TOCKEY DIEFSTELLING DIE DE PARAMETER VAN DE REDIRECT_URI GEBRUIKT

De toepassing initieert het autorisatieproces door een verzoek naar de OAUTH-server te verzenden:

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

De query bevat altijd de parameter "Redirect_uri" die wordt gebruikt door de OAUTH-server om tokens terug te sturen naar de toepassing nadat de gebruiker zijn toestemming heeft gegeven. Als de waarde van deze parameter niet wordt gecontroleerd of niet gecontroleerd, kan de aanvaller het eenvoudig wijzigen en het verzoek naar zijn website omleiden, waar het een speciaal programma gebruikt voor het verwerken van het token en toegang tot een beperkte bron te krijgen.

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

Soms zijn vergelijkbare URL's geblokkeerd. De aanvaller kan de ontvangen gegevens op de Open URL, zoals deze omleiden:

https://www.example.com/oauth20_authorized.srf?[...[&redirect_uri=httpps://accounts.google.com/backtoouthsubtarget?next=httpset://evil.com.

Of dit:

https://www.example.com/oauth2/authorize? [...]% Irect_uri = HTTPS% 3A% 2F% 2FAPPS.FACEBook.com% 2FATTACKER% 2F.

Bij het implementeren van OAUTH kunt u nooit hele domeinen in de witte lijst opnemen. Slechts een paar URL's moeten worden toegevoegd aan "Redirect_uri", niet omgeleid een verzoek om doorzendrect te openen.

Vervalsing van cross-line-aanvragen

Vervalsing van een interder verzoek kan optreden wanneer een aanvaller erin slaagt om het slachtoffer te laten klikken op zijn link en dus om een ​​verzoek te genereren dat hij niet zou genereren. Vervalsing van cross-line-aanvragen wordt meestal verzacht met het CSRF-token, dat is gekoppeld aan de gebruikerssessie. Het helpt de aanvraag om de persoon van een persoon die het verzoek heeft verzonden te controleren. De parameter "Staat" in het OAUTH-protocol dient als CSRF-token.

Het is de moeite waard om te bekijken hoe de CSRF-aanval wordt uitgevoerd op OAUTH en als de parameter "Staat" kan worden gebruikt om de effecten van kwetsbaarheid te verzachten.

Hacker opent een webtoepassing en lanceert het autorisatieproces om toegang te krijgen tot de serviceprovider met behulp van OAUTH. De applicatie vraagt ​​om een ​​serviceprovider om toegang te krijgen die moet worden verstrekt. Hacker wordt omgeleid naar de website van de serviceprovider, waar u gewoonlijk uw gebruikersnaam en wachtwoord wilt invoeren om de toegang toe te staan. In plaats daarvan vangt de hacker vangt en voorkomt dit verzoek en bespaart de URL. Hacker zorgt op een of andere manier het slachtoffer om deze URL te openen. Als het slachtoffer het systeem van het serviceprovider is ingevoerd met behulp van zijn rekening, worden de inloggegevens gebruikt om een ​​autorisatiecode uit te geven. De autorisatiecode ruilt toegang tot het tokentoken. Nu is het hacker-account in de applicatie geautoriseerd. Het heeft toegang tot het account van het slachtoffer.

Dus, hoe kan ik deze situatie voorkomen met de parameter "Staat"?

De applicatie moet een waarde maken die op een of andere manier is gebaseerd op het bronaccount (bijvoorbeeld de sleutel van de gebruikerssessie). Het is niet zo belangrijk wat het is, het belangrijkste is dat de waarde uniek is en gegenereerd met behulp van privé-informatie over de oorspronkelijke gebruiker. Het is toegewezen aan de parameter "Staat".

Deze waarde wordt verzonden naar de serviceprovider bij het omleiden. Nu nodigt de hacker het slachtoffer uit om de URL te openen, die hij behoudt.

De autorisatiecode wordt afgegeven en teruggestuurd naar de client in de sessie, samen met de parameter "Staat".

De client genereert een parameterwaarde op basis van een sessie-informatie en vergelijkt deze met de "Staat" -waarde, die is teruggestuurd van het autorisatieverzoek naar de serviceprovider. Deze waarde komt niet overeen met de parameter "Staat" in de query, omdat deze alleen is gegenereerd op basis van informatie over de huidige sessie. Dientengevolge wordt de verkregen waarde niet geaccepteerd door het systeem.

Andere kwetsbaarheden die worden gedetecteerd bij het implementeren van OAUTH omvatten de mogelijkheid om XSS (cross-site scripting) uit te voeren met behulp van de parameter "Redirect_uri", de OAUTH-particuliere sleutelinstelling (de sleutel kan soms worden verkregen bij het decompileren van een mobiele toepassing) en overtreding van de autorisatiecode (wanneer De autorisatiecode kan meer dan eens worden gebruikt om meerdere toegangspunten uit te geven). Deze kwetsbaarheden zijn minder gebruikelijk dan die hierboven beschreven, maar het maakt ze niet minder gevaarlijk. De ontwikkelaar moet alle nodige praktijken kennen om een ​​betrouwbare werking van zijn webtoepassing te waarborgen.

De auteur van het vertaalde artikel: Simon Saliba.

Belangrijk! Informatie uitsluitend voor academische doeleinden. Houd u aan de wetgeving en pas deze informatie niet toe voor illegale doeleinden.

Meer interessant materiaal op cisoclub.ru. Abonneer u op ons: Facebook | VK | Twitter | Instagram | Telegram | Zen | Messenger | ICQ NIEUW | YouTube | Puls.

Lees verder