User Enumeration er en sikkerhedssårbarhed, hvor et system utilsigtet afslører, om en bestemt bruger, e-mail eller konto eksisterer. Angrebet bruges typisk som forberedende fase til mere alvorlige angreb som brute force, credential stuffing eller phishing.
Det er lav kompleksitet, men høj strategisk værdi.
User enumeration opstår, når applikationens respons varierer afhængigt af, om en bruger findes eller ej.
Eksempler:
“E-mail findes ikke” vs. “Forkert password”
Forskellig HTTP-statuskode
Forskellig responstid
Forskellig fejltekst eller UI-adfærd
Angriberen kan systematisk teste og opbygge en valideret brugerliste.
Problemet opstår typisk i:
Login-formularer
“Glemt password”
Registreringsflows
API-endpoints
Admin-interfaces
Årsagen er næsten altid:
For detaljeret fejlhåndtering
Manglende standardisering af svar
UX-optimering uden sikkerhedsovervejelse
Gør målrettede angreb markant lettere
Reducerer angrebsoverfladen for angriberen
Forbedrer succesrate for brute force og phishing
Øget risiko for kontoovertagelse
Tab af kundetillid
Større konsekvens ved databrud
Kan være i strid med GDPR (persondataeksponering)
Audit finding ved sikkerhedsgennemgang
“User not found” afslører, at e-mailen ikke eksisterer
“Vi har sendt en mail” kun hvis brugeren findes
“Denne e-mail er allerede i brug”
404 vs. 401/403 afhængigt af brugerens eksistens
Angriber indsamler e-mails (leaks, LinkedIn, scraping)
Tester dem mod applikationen
Filtrerer gyldige brugere
Iværksætter målrettede angreb
Eskalerer ved succes
CAPTCHA alene
Rate limiting alene
Skjult frontend-logik
Hvis backend lækker signaler, er frontend irrelevant.
Samme fejlbesked uanset årsag
Samme HTTP-statuskode
Samme responstid (så vidt muligt)
Eksempel:
“Login mislykkedes. Kontroller dine oplysninger.”
Altid samme besked:
“Hvis kontoen findes, er der sendt en e-mail.”
Begræns antal forsøg
Gælder også for “glemt password”
Detekter mønstre i enumeration-forsøg
Alert ved sekventielle tests
Undgå eksponering af interne identifikatorer
Brug opaque IDs
Valider adgang før eksistens afsløres
User enumeration virker uskyldigt, men:
Skalerer ekstremt godt for angribere
Koster næsten intet at udnytte
Forværrer alle andre sårbarheder
Det er en force multiplier for angreb.
Udfordring: UX vil være “hjælpsom”
Løsning: Standardiser fejlbeskeder globalt
Udfordring: Legacy-systemer
Løsning: Wrapper-lag der normaliserer svar
Udfordring: API’er bygget til interne formål
Løsning: Antag altid ekstern eksponering
User enumeration handler ikke om adgang, men om information.
Hvis du fortæller, hvem der findes i systemet, hjælper du angriberen gratis.