OAuth-sårbarheter och angreppsmönster
Studera manipulation av redirect URI, CSRF mot authorization endpoint och sårbarheter som läcker token.
OAuth-sårbarheter och angreppsmönster är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Open redirect i redirect_uri
OAuth-auktoriseringsservrar måste validera parametern redirect_uri strikt. Om servern tillåter prefixmatchning eller jokerteckenmatchning (till exempel genom att acceptera alla URL:er som börjar med "https://app.example.com") kan en angripare skapa en auktoriseringsbegäran som omdirigerar till "https://app.example.com.attacker.com/steal" eller till en open redirect på den legitima domänen och på så sätt stjäla auktoriseringskoden.
CSRF på auktoriseringsendpointen
Utan CSRF-skydd kan en angripare initiera ett OAuth-flöde och lura offrets webbläsare att slutföra auktoriseringen. Offret auktoriserar då angriparens klient utan att avse det. Parametern "state" (RFC 6749) förhindrar detta: klienten genererar ett slumpmässigt state, inkluderar det i begäran och verifierar att det matchar i callbacken. Vid en avvikelse avbryts flödet.
Auktoriseringskod som fångas upp
På mobila plattformar kan skadliga appar registrera samma anpassade URI-schema som en legitim OAuth-klient och fånga upp auktoriseringskoder som omdirigeras efter användarens autentisering. PKCE (RFC 7636) är det fullständiga försvaret: den uppfångade koden är oanvändbar utan den code verifier som endast den legitima appen genererade i början av flödet.
Tokenläckage via Referer-headern
När en ID-token eller access token ingår i ett URL-fragment eller en frågeparameter innehåller efterföljande navigeringar från sidan URL:en i Referer-headern, vilket potentiellt kan läcka token till analyskript från tredje part eller CDN-leverantörer. Använd alltid auktoriseringskodflödet med tokenleverans via back channel för att undvika att tokens förekommer i URL:er.
Mix-up-attacker i konfigurationer med flera providers
När en klient stöder flera OAuth-providers kan mix-up-attacker lura klienten att skicka en auktoriseringskod som hämtats från Provider A till Provider B:s token-endpoint. Klienten måste validera claimen "iss" i ID-tokens och binda callbacken till den specifika providern som initierade flödet med hjälp av state-parametern eller JARM (JWT-Secured Authorization Response Mode).
SSRF via redirect_uri
Server-side request forgery (SSRF) riktar sig mot OAuth-implementationer som gör HTTP-anrop från servern till redirect_uri. Om auktoriseringsservern hämtar redirect_uri för att verifiera den kan en angripare ange en intern IP-adress (till exempel http://169.254.169.254/latest/meta-data/) för att komma åt metadata om molninstansen eller interna tjänster. Strikt validering av redirect_uri med en allowlist förhindrar detta.
Kontoövertagande via kollision mellan email-claims
Många applikationer använder email-claimen från en OIDC-ID-token för att koppla ihop konton mellan providers. Om en angripare kontrollerar en e-postadress som matchar offrets konto hos en annan provider kan angriparen registrera sig hos en annan provider med den adressen och få åtkomst till offrets konto. Försvar: koppla endast konton med paret (iss, sub), aldrig enbart med e-postadressen.
Förväxling av JWT-algoritmer
Attacker med JWT-algoritmförväxling utnyttjar implementationer som litar på headern "alg" för att välja verifieringsalgoritm. Attacken går ut på att ändra "alg" från "RS256" till "HS256" och signera token med serverns publika nyckel som HMAC-hemlighet (eftersom den publika nyckeln är offentlig). Försvar: ange alltid den förväntade algoritmen uttryckligen i verifieringskoden och lita aldrig på claimen alg i tokenheadern.
OAuth-nätfiske genom förfalskade samtyckesskärmar
Angripare registrerar skadliga OAuth-klienter med namn och logotyper som ser legitima ut och skickar sedan nätfiskelänkar till sina mål. Offret ser en äkta OAuth-samtyckesskärm (som tillhandahålls av Google, Microsoft och andra) för en skadlig applikation och beviljar åtkomst. Försvar: verifiera att client_id motsvarar den förväntade applikationen. Google och Microsoft erbjuder klientverifieringsprogram för legitima appar.
Attacker med scope-eskalering
Scope-eskalering inträffar när en klient får tokens med mer omfattande behörigheter än användaren har auktoriserat. Implementeringsfel som hoppar över scope-validering på token-endpointen, cachar tokens med sammanfogade scopes från olika begäranden eller inte validerar att scopet i den utfärdade token inte överskrider det auktoriserade scopet kan alla leda till behörighetseskalering via OAuth.
Sammanfattning av säkerhetsrutiner
Skydda OAuth-implementationer genom att: använda validering av redirect_uri med exakt matchning, kräva PKCE för alla publika klienter, validera state-parametern som CSRF-skydd, binda ID-tokens med (iss, sub) och inte med e-postadress, uttryckligen ange de förväntade JWT-algoritmerna, begära minimala scopes, använda kortlivade access tokens med rotation av refresh tokens och granska samtyckesskärmens utformning med avseende på risken för varumärkesimitation.
Kontroll av OAuth redirect_uri
En OAuth-auktoriseringsserver accepterar alla redirect_uri-värden som börjar med "https://app.example.com". Vilken attack möjliggör detta?
Lektionssammanfattning: OAuth-attackmönster
Viktiga OAuth-attacker: open redirect genom bristfällig validering av redirect_uri (använd exakt matchning), CSRF på grund av en saknad state-parameter, auktoriseringskoder som fångas upp på mobila plattformar (motverkas av PKCE), tokenläckage i URL:er, mix-up-attacker i konfigurationer med flera providers (validera iss), SSRF genom serverhämtad redirect_uri, kollision mellan email-claims (använd iss+sub), JWT-algoritmförväxling (fastställ förväntad alg) och nätfiske via falska samtyckesskärmar.
Lär dig Cryptology Academy med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 67
- Lektioner
- 261
Vanliga frågor
Är lektionen ”OAuth-sårbarheter och angreppsmönster” gratis?
Ja – hela texten till ”OAuth-sårbarheter och angreppsmönster” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”OAuth-sårbarheter och angreppsmönster”?
Studera manipulation av redirect URI, CSRF mot authorization endpoint och sårbarheter som läcker token. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?
Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”OAuth-sårbarheter och angreppsmönster”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?
Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- OAuth 2.0-flöden och token-typer
- PKCE: Skydda publika klienter
- OpenID Connect-anspråk och ID-token
- OAuth-sårbarheter och angreppsmönster