Selhání identifikace a autentizace
🔴 Potvrzujte identitu uživatele a ověřujte session pro ochranu před útoky souvisejícími s autentizací.
- Slabiny v autentizaci mohou nastat, pokud aplikace
- umožňuje automatizované útoky jako je například credential stuffing, kdy má útočník k dispozici seznam platných uživatelských jmen a hesel,
- umožňuje útoky hrubou silou (brute force) nebo jiné automatizované útoky,
- povoluje výchozí, slabá nebo dobře známá hesla a kombinace (admin / admin),
- používá slabé nebo neúčinné procesy obnovy credentials a zapomenutých hesel, jako jsou odpovědi na kontrolní otázky, které nelze zabezpečit,
- používá plain text nebo hesla slabě hashuje (viz cryptographic failures),
- nemá vícefaktorové ověření (MFA), nebo je neúčinné,
- vystavuje session ID v URL,
- opakovaně používá stejné session ID po úspěšném přihlášení,
- nezneplatňuje session ID,
- nezneplatňuje nebo špatně zneplatňuje sessions a tokeny (především SSO tokeny) v případě odhlášení uživatele nebo jeho neaktivity.
Jak zranitelnosti předcházet
🔴 Implementujte vícefaktorové přihlášení, abyste zabránili automatizovaným útokům typu credential stuffing, brute force a opakovanému použití ukradených credentials.
🔴 Nenasazujte aplikaci s žádnými výchozími credentials, zejména ne pro admin uživatele.
🔴 Zaveďte kontrolu slabých hesel, například podle seznamu 10.000 nejhorších hesel.
🔴 Sjednoťte zásady délky a rotace hesel na základě pokynů NIST.
🔴 Zajistěte, aby registrace, obnovení credentials a API byly zabezpečeny proti enumeration útokům.
🔴 Omezte, nebo stále více oddalujte neúspěšné pokusy o přihlášení.
- Dávejte pozor, abyste nevytvořili scénář, kdy služba nepůjde použít.
🔴 Logujte všechna nezdařilá přihlášení a upozorňujte správce, pokud objevíte útoky typu credential stuffing, brute force nebo jiné.
🔴 Použijte zabezpečený integrovaný session manager na straně serveru, který po přihlášení vygeneruje nové náhodné session ID s vysokou entropy.
- Session identifikátor by neměl být v URL adrese, měl by být bezpečně uložen a zneplatněn po odhlášení, nečinnosti a absolutním časovém limitu.
Příklad zneužití zranitelnosti
- Běžným útokem je tzv. credential stuffing - používání seznamu známých hesel. Předpokládejme, že aplikace neimplementuje automatickou ochranu proti těmto hrozbám. V takovém případě je možné aplikaci opakovaně posílat přihlašovací jména a hesla a ověřit tak jejich platnost.
- K většině autentizačních útoků dochází kvůli neustálému používání hesel jako jediného faktoru. Požadavky na střídání hesel a jejich složitost, které byly kdysi považovány za osvědčené postupy, podněcují uživatele k opakovanému používání slabých hesel. Organizacím se doporučuje tyto postupy podle normy NIST 800-63 ukončit a používat vícefaktorové přihlášení.
- Časové limity sessions aplikace nejsou nastaveny správně. Uživatel používá k přístupu k aplikaci veřejný počítač v knihovně. Místo toho, aby vybral možnost "Odhlásit se", zavře kartu prohlížeče a odejde. Útočník použije stejný počítač o hodinu později a uživatel je stále přihlášený.
Kam dál
Cheat sheety
- Autentizace
- Správa session
- Ukládání hesel
- Zapomenuté heslo
- Prevence credential stuffing
- Implementace digitální identity