CSRF
-
Cross Site Request Forgery (CSRF) je zranitelnost, která umožňuje útočníkovi provést neautorizované akce na cílovou(jinou) webovou aplikaci, než oběť aktuálně používá.
-
Protože oběť je přihlášena k cílové webové aplikaci, útočník může využít její oprávnění k provedení škodlivých akcí, jako je změna nastavení účtu, odesílání zpráv nebo dokonce převzetí kontroly nad účtem oběti.
-
Útok CSRF funguje tak, že útočník vytvoří škodlivý odkaz nebo formulář, který obsahuje požadavek na webovou aplikaci, na kterou je oběť přihlášena. Když oběť klikne na tento odkaz nebo odešle formulář, požadavek je odeslán na webovou aplikaci s oprávněními oběti, což umožňuje útočníkovi provést neautorizované akce.
Příklad útoku
- Uživatel je přihlášen na webovou stránku - např.
example.coma má oprávnění provádět určité akce, například změnit své heslo. - Útočník vytvoří škodlivou webovou stránku - např.
malicious.com, která obsahuje formulář pro změnu hesla naexample.coma umístí tento formulář na svou stránku. - Formulář může vypadat náísledovně:
<h2>Win a new phone!</h2>
<form action="http://example.com/change_password" method="POST">
<input type="hidden" name="new_password" value="hacked123">
<input type="submit" value="Click here to win!">
</form>
Takto bude vypadat formulář:
Win a new phone!
- Když uživatel navštíví
malicious.coma klikne na tlačítko “Click here to win!”, formulář se odešle naexample.coms oprávněními uživatele, což umožňuje útočníkovi změnit heslo oběti na “hacked123” bez jejího vědomí.
Následky CSRF
-
CSRF útoky mohou mít závažné dopady na bezpečnost uživatelských účtů i celé aplikace.
-
Útočník může provádět akce jménem oběti bez jejího vědomí – například změnit heslo, e-mail nebo jiné nastavení účtu.
-
Může dojít k neoprávněnému odesílání formulářů (např. objednávek, zpráv, převodů peněz).
-
V případě administrátorských účtů může útok vést až k úplnému kompromitování aplikace (např. změna konfigurace nebo mazání dat).
Ochrana proti CSRF
- Proti CSRF útokům existuje několik účinných obranných mechanismů:
CSRF tokeny (anti-CSRF tokeny)
- Každý formulář obsahuje unikátní, náhodně generovaný token, který server ověřuje při každém požadavku.
- Útočník tento token nezná, takže nemůže vytvořit validní požadavek.
SameSite cookies
- Nastavení cookie atributu SameSite (Strict nebo Lax) omezuje odesílání cookies při cross-site požadavcích.
- Tím se zabrání automatickému přihlášení oběti při útoku.
Ověření HTTP hlaviček
- Kontrola hlaviček jako Origin nebo Referer pomáhá ověřit, odkud požadavek pochází.
Použití POST místo GET
- Kritické operace (např. změna hesla) by neměly být dostupné přes GET požadavky.
Dvoufaktorová autentizace (2FA)
- I pokud dojde k CSRF útoku, dodatečné ověření může zabránit provedení citlivé akce.
Shrnutí
-
CSRF je závažná zranitelnost, která umožňuje útočníkovi provést neautorizované akce jménem oběti.
-
Umožňuje to pomocí cookies a dalších autentizačních mechanismů, které jsou automaticky odesílány prohlížečem.
-
Útoky CSRF mohou mít vážné důsledky pro bezpečnost uživatelských účtů i celé aplikace.
-
Ochrana proti CSRF zahrnuje použití CSRF tokenů, nastavení SameSite cookies, ověření HTTP hlaviček, používání POST místo GET pro kritické operace a implementaci dvoufaktorové autentizace (2FA).
-
Pravidelná aktualizace a bezpečnostní záplaty jsou také důležité pro minimalizaci rizika CSRF útoků.