Přeskočit na hlavní obsah

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é
ÚtokPopis
Brute forceTestování více hesel ze slovníku nebo jiného zdroje proti jednomu účtu
Credential stuffingTestování dvojic uživatelské jméno / heslo získaných z narušení jiného webu
Password sprayingTestová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
  1. Implementujte ji všude, kde je to možné - v závislosti na cílové skupině
  2. 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í
  • 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)
  1. 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
  1. 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ů
  1. 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
  1. Vytvořte otisk zařízení pomocí těchto atributů
  2. 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í
  3. 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í

  1. Rozdělte přihlášení na více požadavků - samostatné zadání uživatelského jména a následně hesla

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
  1. 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

  1. Zkontrolujte, zda uživatelem zadané heslo už není prolomené
  2. Použijte službu Pwned Passwords, která poskytuje API
    1. Implementujte model k-anonymity - umožňuje hledat heslo podle částečného hashe

Notifikujte uživatele ohledně neobvyklých bezpečnostních událostech

  1. Upozorněte a varujte uživatele při zjištění podezřelé nebo neobvyklé aktivity
  2. Dbejte na to, aby uživatel nebyl oznámeními zahlcen
  3. 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
    1. Upozorněte na změnu hesla
  4. Zpřístupněte uživateli podrobnosti týající se aktivity (datum a čas, místo přihlášení)
  5. Umožněte uživateli podívat se na seznam aktivních přihlášení (session) a umožněte mu je ukončit

Kam dál

Checklisty