Prevence credential stuffing
- Útoky související s přihlašováním: credential stuffing, password spraying
- Obranné prostředky proti těmto útokům bývají často stejné
Útok | Popis |
---|---|
Brute force | Testování více hesel ze slovníku nebo jiného zdroje proti jednomu účtu |
Credential stuffing | Testování dvojic uživatelské jméno / heslo získaných z narušení jiného webu |
Password spraying | Testování jednoho slabého hesla na velkém počtu účtů |
Vícefaktorové ověření (MFA)
- Nejlepší obrana proti útokům souvisejících s hesly
- Implementujte ji všude, kde je to možné - v závislosti na cílové skupině
- Kombinujte přihlášení s dalšími technikami pro vyvážení bezpečnosti a použitelnosti nebo ji vyžadujte jen někdy
- Při změně prohlížeče / zařízení nebo IP adresy
- Neobvyklá poloha nebo země
- Specifická země považovaná za nedůvěryhodnou
- Blokovaná IP adresa
- IP adresa, která se pokusila přihlásit k několika účtům
- Pokus o přihlášení, který se jeví jako automatizovaný
- U podnikových aplikací je možné přidat seznam povolených adres - pro ně se MFA nevyžaduje
Alternativní obrana
- Žádná z níže uvedených metod není samostatně tak účinná jako MFA
- Implementujte různé druhy obrany pro různé role (MFA jen pro správce)
Sekundární heslo, PIN a bezpečnostní otázky
- Kromě hesla je uživatel vyzván k zadání dalších informací
- PIN, specifické heslo nebo slovo, odpověď na bezpečnostní otázku
- Nejde o MFA (oba faktory jsou stejné - něco, co uživatel zná)
CAPTCHA
- Zabrání automatickým pokusům o přihlášení (zpomaluje útok)
- Existují nástroje k jejich prolomení (vysoká úspěšnost)
- Požadujte CAPTCHu např. jen když považujete pokus o přihlášení za podezřelý
Blokování IP adres
- Méně sofistikované útoky využívají malý počet IP adres, které lze snadno blokovat
- Takové pokusy logujte, sledujte a oddělte je od legitimních pokusů
- Seznam by měl být dočasný, aby se snížila pravděpodobnost zablokování legitimních uživatelů
- Uložte poslední IP adresu, která se úspěšně přihlásila k účtu, aby bylo možné adresy kontrolovat a porovnávat
Device fingerprinting
- Operační systém, prohlížeč, jazyk, user agent nebo také rozlišení obrazovky, nainstalovaná písma a pluginy prohlížeče
- Vytvořte otisk zařízení pomocí těchto atributů
- Porovnejte otisk při dalším pokusu o přihlášení a v případě selhání vyzvěte uživatele k dalšímu ověření
- Použijte například knihovnu
[fingerprintjs](https://github.com/fingerprintjs/fingerprintjs)
- Tyto informace poskytuje klient, takže mohou být útočníkem podvrhnuty
Vyžadujte nepředvídatelná uživatelská jména
- Mnoho webů používá email jako uživatelské jméno
- Uživatel pak používá stejný email ve více aplikacích
- Tím se stává útok credential stuffing jednodušším
- Požadavek na specifické uživatelské jméno útočníkovi ztěžuje získání platných údajů
- Můžete uživatelské jméno vygenerovat, ale dbejte na to, aby nebylo předvídatelné
Obrana do hloubky
- Mechanismy v této kapitole nestačí k zabránění útokům
- Lze je využít jako dodatečnou vrstvu ochrany
Více-krokové přihlášení
- Většina aplikací má jednokrokový proces přihlašování
- Rozdělte přihlášení na více požadavků - samostatné zadání uživatelského jména a následně hesla
- Implementujte CSRF token ochranu
Vyžadujte zapnutý javascript a blokujte headless prohlížeče
- Většina útoků je prováděna přímo na API - nespouští javascript, pouze čte odpovědi
- Identifikujte použití Headless Chrome, PhantomJS a dalších nástrojů
- Blokování návštěvníků s vypnutým javascriptem sníží přístupnost
- Návštěvníci používající čtečky
- V některých jurisdikcích je to v rozporu s právními předpisy
Identifikujte uniklá hesla
- Zkontrolujte, zda uživatelem zadané heslo už není prolomené
- Použijte službu Pwned Passwords, která poskytuje API
- Implementujte model
k-anonymity
- umožňuje hledat heslo podle částečného hashe
- Implementujte model
Notifikujte uživatele ohledně neobvyklých bezpečnostních událostech
- Upozorněte a varujte uživatele při zjištění podezřelé nebo neobvyklé aktivity
- Dbejte na to, aby uživatel nebyl oznámeními zahlcen
- Upozorňujte na to, že došlo k pokusu o přihlášení se správným heslem, které však neprošlo kvůli MFA
- Upozorněte na změnu hesla
- Zpřístupněte uživateli podrobnosti týající se aktivity (datum a čas, místo přihlášení)
- Umožněte uživateli podívat se na seznam aktivních přihlášení (session) a umožněte mu je ukončit