Níže nabízím překlad z Home > Stable > 4-Web Application Security Testing > 04-Authentication Testing > Testing for Weak Lock Out Mechanism
Shrnutí
Mechanismy blokování účtu jsou používány k omezení útoků hrubou silou. Některé z útoků, které lze porazit použitím mechanismu blokování účtu, jsou:
- Hádaní přihlašovacího jména nebo hesla.
- Hádaní kódů na jakékoliv 2FA funkčnosti nebo bezpečnostních otázkách.
Mechanismy blokování účtu vyžadují vyvážení mezi ochranou účtů před neoprávněným přístupem a ochranou uživatelů před zamítnutím oprávněného přístupu. Účty jsou obvykle zablokovány po 3 až 5 neúspěšných pokusech a mohou být odblokovány po předem určené době, prostřednictvím mechanismu samoobslužného odblokování nebo zásahem administrátora.
Navzdory snadnému provádění útoků hrubou silou je výsledek úspěšného útoku nebezpečný, protože útočník získá plný přístup k uživatelskému účtu a ke všem funkcím a službám, ke kterým má uživatel přístup.
Cíle testu
- Vyhodnotit schopnost mechanismu blokování účtu omezit útoky hrubou silou hádáním hesel.
- Vyhodnotit odolnost mechanismu odblokování proti neoprávněnému odblokování účtu.
Jak testovat
Mechanismus blokování
K testování síly mechanismu blokování budete potřebovat přístup k účtu, který jste ochotni nebo si můžete dovolit zablokovat. Pokud máte pouze jeden účet, pomocí kterého se můžete přihlásit do webové aplikace, proveďte tento test na konci svého testovacího plánu, abyste předešli ztrátě času při testování kvůli zablokování účtu.
Pro vyhodnocení schopnosti mechanismu blokování účtu omezit útoky hrubou silou hádáním hesel, zkuste se několikrát nesprávně přihlásit pomocí chybného hesla a poté použijte správné heslo, abyste ověřili, zda byl účet zablokován. Příklad testu může vypadat takto:
- Pokuste se třikrát přihlásit s nesprávným heslem.
- Úspěšně se přihlaste pomocí správného hesla, čímž prokážete, že se mechanismus blokování nespustí po třech nesprávných pokusech o autentizaci.
- Pokuste se čtyřikrát přihlásit s nesprávným heslem.
- Úspěšně se přihlaste pomocí správného hesla, čímž prokážete, že se mechanismus blokování nespustí po čtyřech nesprávných pokusech o autentizaci.
- Pokuste se pětkrát přihlásit s nesprávným heslem.
- Pokuste se přihlásit pomocí správného hesla. Aplikace vrátí zprávu „Váš účet je zablokován“, čímž potvrdíte, že účet je zablokován po pěti nesprávných pokusech o autentizaci.
- Pokuste se přihlásit pomocí správného hesla o 5 minut později. Aplikace vrátí zprávu „Váš účet je zablokován“, čímž prokážete, že mechanismus blokování se neodblokuje automaticky po 5 minutách.
- Pokuste se přihlásit pomocí správného hesla o 10 minut později. Aplikace vrátí zprávu „Váš účet je zablokován“, čímž prokážete, že mechanismus blokování se neodblokuje automaticky po 10 minutách.
- Úspěšně se přihlaste pomocí správného hesla o 15 minut později, čímž prokážete, že mechanismus blokování se automaticky odblokuje po 10 až 15 minutách.
CAPTCHA může bránit útokům hrubou silou, ale může mít své vlastní slabiny, a neměla by nahrazovat mechanismus blokování. CAPTCHA mechanismus může být obejit, pokud není implementován správně. Mezi nedostatky CAPTCHA patří:
- Snadno porazitelná výzva, například aritmetika nebo omezená sada otázek.
- CAPTCHA kontroluje pouze HTTP kód odpovědi namísto úspěchu odpovědi.
- CAPTCHA logika na straně serveru je ve výchozím nastavení úspěšná.
- Výsledek CAPTCHA výzvy není nikdy ověřen na straně serveru.
- CAPTCHA vstupní pole nebo parametr je zpracováván ručně a je nesprávně validován nebo vyčištěn.
Pro vyhodnocení účinnosti CAPTCHA:
- Posuďte výzvy CAPTCHA a zkuste automatizovat řešení v závislosti na obtížnosti.
- Zkuste odeslat požadavek bez vyřešení CAPTCHA prostřednictvím normálního UI mechanismu.
- Zkuste odeslat požadavek s úmyslným selháním CAPTCHA výzvy.
- Zkuste odeslat požadavek bez vyřešení CAPTCHA (za předpokladu, že nějaké výchozí hodnoty mohou být předány kódem na straně klienta) při použití testovací proxy (požadavek odeslán přímo na straně serveru).
- Pokuste se fuzzovat vstupní body CAPTCHA (pokud existují) pomocí běžných injekčních payloadů nebo sekvencí speciálních znaků.
- Ověřte, zda řešení CAPTCHA není obsaženo v alt-textu obrázku, názvu souboru nebo hodnotě v souvisejícím skrytém poli.
- Pokuste se znovu odeslat dříve identifikované platné odpovědi.
- Ověřte, zda vymazání cookies nevede k obejití CAPTCHA (například pokud je CAPTCHA zobrazena až po určitém počtu selhání).
- Pokud je CAPTCHA součástí vícestupňového procesu, zkuste jednoduše přejít nebo dokončit krok za CAPTCHA (například pokud je CAPTCHA prvním krokem v procesu přihlášení, zkuste jednoduše odeslat druhý krok [uživatelské jméno a heslo]).
- Zkontrolujte, zda existují alternativní metody, na které se CAPTCHA nevztahuje, jako například API koncový bod určený k usnadnění přístupu mobilní aplikace.
Opakujte tento proces u každé funkce, která by mohla vyžadovat mechanismus blokování.
Mechanismus odblokování
Pro vyhodnocení odolnosti mechanismu odblokování proti neoprávněnému odblokování účtu spusťte mechanismus odblokování a hledejte slabiny. Typické mechanismy odblokování mohou zahrnovat bezpečnostní otázky nebo odblokovací odkaz zaslaný e-mailem. Odkaz pro odblokování by měl být jedinečný jednorázový odkaz, aby útočník nemohl odhadnout nebo znovu použít odkaz a provést útoky hrubou silou ve větších dávkách.
Pamatujte, že mechanismus odblokování by měl být používán pouze k odblokování účtů. Nejedná se o stejný proces jako mechanismus pro obnovení hesla, ale může následovat stejnou bezpečnostní praxi.
Náprava
Používejte mechanismy odblokování účtu v závislosti na úrovni rizika. V pořadí od nejnižší po nejvyšší zajištění:
- Časově založené blokování a odblokování.
- Samoobslužné odblokování (zasílá odblokovací e-mail na registrovanou e-mailovou adresu).
- Ruční odblokování administrátorem.
- Ruční odblokování administrátorem s pozitivní identifikací uživatele.
Faktory k zvážení při implementaci mechanismu blokování účtu:
- Jaké je riziko útoku hrubou silou hádáním hesel proti aplikaci?
- Je CAPTCHA dostatečná k omezení tohoto rizika?
- Je používán mechanismus blokování na straně klienta (např. JavaScript)? (Pokud ano, deaktivujte kód na straně klienta pro testování.)
- Počet neúspěšných pokusů o přihlášení před blokováním. Pokud je práh blokování příliš nízký, platní uživatelé mohou být příliš často zablokováni. Pokud je práh blokování příliš vysoký, útočník může mít více pokusů k provedení útoku hrubou silou před zablokováním účtu. V závislosti na účelu aplikace je typický práh blokování 5 až 10 neúspěšných pokusů.
- Jak budou účty odblokovány?
- Ručně administrátorem: toto je nejbezpečnější metoda blokování, ale může způsobit nepohodlí uživatelům a zabrat „cenný“ čas administrátora.
- Upozorňujeme, že administrátor by měl mít také metodu obnovy v případě, že jeho účet bude zablokován.
- Tento mechanismus odblokování může vést k útoku typu denial-of-service, pokud cílem útočníka je zablokovat účty všech uživatelů webové aplikace.
- Po určité době: Jaká je doba blokování? Je tato doba dostatečná pro chráněnou aplikaci? Například 5 až 30 minut blokování může být dobrým kompromisem mezi omezením útoků hrubou silou a nepohodlím platných uživatelů.
- Prostřednictvím samoobslužného mechanismu: Jak bylo dříve uvedeno, tento samoobslužný mechanismus musí být dostatečně bezpečný, aby útočník nemohl sám odblokovat účty.
- Ručně administrátorem: toto je nejbezpečnější metoda blokování, ale může způsobit nepohodlí uživatelům a zabrat „cenný“ čas administrátora.
Odkazy
- Viz článek OWASP o útocích hrubou silou (Brute Force Attacks).
- Zapomenuté heslo CS.