Gå direkt till innehåll Gå direkt till meny

Behörighetsmissar – när din app visar mer än den borde

En av de vanligaste, och allvarligaste, säkerhetsbristerna i moderna applikationer är bristande åtkomstkontroll. Det är också därför den hamnar högst upp i OWASP:s lista över de tio vanligaste sårbarheterna i moderna applikationer, A01:2021 Broken Access Control.

Men vad betyder det egentligen, och varför är det så vanligt?

När systemet glömmer fråga: “Får du verkligen se det här?”

I ett säkert system är det inte bara viktigt att veta vem som är inloggad, utan också vad den användaren får göra. Åtkomstkontroll är det som ser till att en användare bara får se och påverka det som är relevant för den rollen. En elev ska inte kunna se en annan elevs betyg, och en vanlig användare ska inte kunna radera andras konton.

Men ibland glöms den kontrollen bort. Det kan bero på felkonfigurerade roller, API:er som inte verifierar användarens rättigheter, eller att systemet litar för mycket på information som kommer från klienten. Då räcker det ibland med att ändra ett ID i URL:en för att få åtkomst till någon annans information.

Det är precis vad som hände i ett uppmärksammat fall i svensk offentlig sektor.

Ett konkret exempel: Skolverkets provplattform

När Skolverket skulle lansera en ny digital provplattform upptäcktes allvarliga åtkomstbrister. Enligt rapporteringen kunde inloggade lärare se elevuppgifter från helt andra skolor, trots att de inte borde ha tillgång till dessa. Den här typen av informationsläckage strider både mot GDPR och grundläggande principer för IT-säkerhet.

Lanseringen stoppades i sista stund och incidenten rapporterades till Integritetsskyddsmyndigheten. Felet låg inte i inloggningssystemet eller autentiseringen, utan i brist på korrekt behörighetskontroll, ett klassiskt exempel på bristande åtkomstkontroll.

Hur allvarligt kan det bli?

Brister i åtkomstkontroll är en av få sårbarheter som direkt kan leda till att känslig information exponeras, även om allt annat är korrekt säkrat. Det spelar ingen roll hur stark lösenordspolicy du har, eller hur mycket data du krypterar, om systemet visar fel data för fel användare.

Konsekvenserna kan bli stora: dataläckor, förlorat förtroende, böter, juridiska påföljder och i värsta fall, manipulation av kritiska resurser. I molnbaserade applikationer och API-first-arkitekturer är detta ett särskilt stort problem, eftersom åtkomstkontroll ofta måste implementeras konsekvent på flera nivåer.

Varför händer det här?

Det finns flera orsaker till att behörighetskontroller brister. Ofta beror det på att utvecklingsteamet fokuserar på att bygga funktionalitet och glömmer frågan om vem som ska få använda den. Ibland finns kontrollen på ett ställe (till exempel i användargränssnittet), men saknas i backend. Det händer också att olika team implementerar åtkomstregler olika, vilket leder till inkonsekventa kontroller.

I vissa system är roller och behörigheter så komplexa att det är svårt att överblicka vilka regler som egentligen gäller. Och när man litar på information från klienten utan att kontrollera det i servern, till exempel att användarens ID skickas i ett formulär, är risken stor att någon utnyttjar det.

Hur skyddar vi oss?

Det viktigaste skyddet mot bristande åtkomstkontroller är att tänka i termer av affärslogik och konsekvent verifiering, inte bara teknisk identitet. Här är några viktiga åtgärder:

1. Minsta privilegium (Least Privilege)

Ge användare bara de rättigheter de absolut behöver. En supporttekniker kanske behöver läsa användardata, men ska inte kunna ändra lösenord eller ta bort konton. Rollen ska begränsa vilka funktioner, resurser och data som användaren har tillgång till.

Detta bör även följas upp med regelbunden granskning: har någon fått extra behörigheter som inte längre behövs? Finns konton med för breda åtkomsträttigheter?

2. “Deny by default”

Utgångspunkten i alla system bör vara att ingen har åtkomst till något förrän det uttryckligen tillåts. Detta minimerar risken för att en ny funktion eller API-endpoint av misstag görs tillgänglig för obehöriga användare.

Ett REST-API bör endast tillåta att specifika autentiserade och auktoriserade klienter kan använda det. Offentlig tillgång ska inte vara standard.

3. Tydliga och återanvändbara åtkomstkontroller

Skapa centrala och enhetliga funktioner för att kontrollera åtkomst. Använd inte ad-hoc-lösningar i olika delar av applikationen. I stället bör du bygga ett robust ramverk där alla kontrollpunkter hanteras konsekvent.

Om du exempelvis har flera endpoints som kräver att användaren tillhör en viss organisation, skapa en gemensam kontrollfunktion som alltid kallas upp, så undviker du logiska misstag och glömda kontroller.

4. Undvik klientstyrd auktorisation

Lita aldrig på data som kommer från klienten. Om användaren skickar ett användar-ID i en POST-request, måste systemet själv kontrollera att användaren har rätt att agera på det ID:t. Det räcker inte att bara anta att användaren är ärlig.

5. Affärsregler som förstärkning

Inför affärsgränser i systemets logik. En användare får kanske beställa max 5 produkter per köp, eller en elev får bara se sina egna betyg. Dessa regler bör ligga i backend, inte i gränssnittet, så att de inte kan kringgås genom manipulation av anrop eller API.

6. Säkra API:er

API:er är särskilt utsatta eftersom de ofta exponerar kärnfunktioner direkt. Varje anrop bör verifieras med autentisering (till exempel tokens) och auktorisering (vad får denna användare göra?). Begränsa även CORS till specifika, betrodda domäner, och endast om det verkligen behövs.

7. Sessionshantering och tokens

Sessions-ID:n bör ogiltigförklaras när användaren loggar ut. För tokens som JWT, är det viktigt att de har kort livslängd, annars riskerar man att en kapad token ger långvarig åtkomst.

Om du ändå använder tokens med längre giltighetstid bör du följa OAuth 2.0-standarder och ha möjlighet att återkalla åtkomst, till exempel via en revocation endpoint eller med hjälp av refresh tokens.

8. Granska och testa

Manuell kodgranskning, automatiska säkerhetstester (till exempel med verktyg som OWASP ZAP eller Burp Suite) och penetrationstester är bra sätt att identifiera sårbarheter innan en angripare gör det. Testa särskilt att användare inte kan manipulera URL:er, cookies eller HTTP-anrop för att få åtkomst till förbjudna resurser.

Sammanfattning

Broken Access Control handlar inte om om användaren är inloggad, utan vad den får göra när den är det. Det är lätt att missa i komplexa system, men konsekvenserna kan bli stora.

Som utvecklare är det ditt ansvar att se till att rätt användare har rätt åtkomst och inget mer. Det handlar om att tänka i roller, verifiera varje steg och aldrig lita på att klienten gör rätt.

Vill du se hur brister i åtkomstkontroll kan utnyttjas i praktiken? Kolla in vår video där vi visar konkreta exempel och hur du kan undvika dem. [LÄNK TILL VIDEO]

Är du osäker på hur din applikation hanterar åtkomsträttigheter? Kontakta gärna vårt AppSec-team på appsec@decerno.se. Vi hjälper dig få koll på både rättigheterna och riskerna.

0 sek
Simon WendelSimon Wendel

Kontakta Simon Wendel

AppSec specialist

Kul att du vill veta mer! Applikationssäkerhet behöver inte vara komplicerat – men det är avgörande. Jag bollar gärna tankar om hur ni kan stärka säkerheten i era digitala lösningar.

Please fill out

Vill du veta mer om hur du kan bygga säkrare digitala lösningar?

Som specialist på applikationssäkerhet hjälper jag våra kunder att bygga robusta och säkra system – från arkitektur till implementation. Hör gärna av dig om du vill veta mer om hur vi kan säkra din digitala tjänst.

Simon WendelSimon Wendel

Simon Wendel

AppSec specialist

Fler nyheter

OWASP Top 10 – Cryptographic

bygger en AI agentbygger en AI agent

AI-agenter: nästa stora skifte i hur organisationer arbetar

AI-nyheter november 2025

OWASP Top 10 – Injection

QR-kod på resturangQR-kod på resturang

Blir alla tjänster bättre av digitalisering?

Webinar – När AI möter applikationssäkerhet

Generativ AI förändrar hur vi bygger system , men öppnar också nya dörrar för angripare.

AI-nyheter: oktober 2025

Introduktion till Secure Coding

AI-ordlista 2025

POC MVPPOC MVP

POC eller MVP vad är egentligen skillnaden?

AI ruttoptimeringAI ruttoptimering

Varför vi gör en AI Proof of Concept trots att vi redan har gjort många AI-projekt

Optimera processer med AIOptimera processer med AI

AI som effektiviserar fem konkreta vinster i verksamheten

kvinna med fitness trackerkvinna med fitness tracker

Data den bortglömda grunden för all AI

AI-nyheter: September 2025 Agenter, video och GPU

En säkerhetsexpert analyserar en teknisk lösningEn säkerhetsexpert analyserar en teknisk lösning

Inspelat webinar – Säkerhetsgranskning

Säkerhetsgranskning i praktiken, från analys till åtgärd

Inspelat webinar – Vem är hackern?

Cyberhotan ökar – hur skyddar vi oss?

Teknisk granskning

Undvik dyra misstag och stärk er säkerhet

Säkerhet är kvalité

För att en applikation ska hålla hög kvalitet måste varje detalj vara genomtänkt och korrekt.

Frukostmingel IT-säkerhet

Frukostseminarium om IT-säkerhet, är ni tillräckligt skyddade?

Gammalt datorcenterGammalt datorcenter

Cybersäkerhetens historia

Hoten då och nu.

Spåra sårbarheter i tredjepartsbibliotek

Det första steget till en säkrare framtid är vetskapen om era sårbarheter.

Could not find any posts

Hör av dig till oss redan idag

När du bokar ett möte med oss kan du förvänta dig:

  • En personlig dialog med vårt team för att hitta lösningar som passar just er
  • Konkret vägledning för att bygga, effektivisera och utveckla era system
  • Inspirerande idéer från våra experter med djup teknisk kompetens

 

Please fill out