CSRF

Z WikiKnihovna
Přejít na: navigace, hledání

Autor: Jaroslav Kvasnica

Klíčová slova: informační bezpečnost, webové útoky, hacker, hacking

Synonyma: Session Riding, Confused Deputy, XSRF

Související pojmy:

nadřazené - XSS, Clickjacking, HTTP, cookie, JavaScript, URL
podřazené - GET, POST, autorizační token, HTTP Referer


Charakteristiky

Cross-site request forgery (CSRF) je metoda webového útoku, která „spočívá v tom, že uživatele přimějeme navštívit stránku napadané aplikace, která provádí nějakou akci, aniž by o tom uživatel věděl“.[1] Cílem útočníka je donutit uživatele provést bez jeho vědomí akci v nějaké webové službě. Podmínkou pro úspěšné provedení útoku je útočníkova znalost napadené aplikace a vstup uživatele na útočníkovu infikovanou stránku nebo kliknutí na infikovaný odkaz.

„CSRF útok vždy představuje zvláštní internetový odkaz, který se útočník snaží podstrčit své oběti (zpravidla nějakému návštěvníkovi webových stránek) a který mu v případě úspěchu umožní provést skrytou akci pod cizí identitou.“ [2] Infikovaný odkaz v sobě má zakódovaný správně formulovaný požadavek, který vykoná útočníkem zamýšlenou akci ve webové aplikaci.

Odesílání požadavku

Odeslání požadavku do služby je možné dosáhnout dvěmi způsoby. Pomocí metody GET a POST.

Metoda GET představuje odeslání požadavku přímo v URL proměnné. Může vypadat například takto:[3]

<img src="http://URL//poslat?komu=nejakyEmail@server&predmet=test&obsah=textemailu">

V tomto příkladě jde o infikovaný obrázek, resp. o cestu k umístění obrázku (reálně žádný obrázek neexistuje). V odkazu je ukrytý požadavek na odeslání falešného emailu. Z toho plyne, že jakmile uživatel přistoupí na stránku s tímto falešným obrázkem, tak se odešle bez jeho vědomí požadavek na webovou službu a ta odešle falešný email.

Při metodě POST se požadavky odesílají skrytě mimo samotný odkaz. V tomto případě útočník využívá při tvorbě infikovaného odkazu JavaScript. Může se stát, že má uživatel vypnutý JavaScript ve svém prohlížeči – v takovém případě útok selže. Ale moderní prohlížeče mají JavaScript implicitně povolený.

U některých požadavků webové aplikace vyžadují, aby byl uživatel přihlášený. S tím útočník počítá a využívá cookies. Počítá s tím, že uživatel je ke službě přihlášeny již z minulosti.

Obrana za strany serveru

Proti CSRF je možné chránit se několika způsoby, které jsou víceméně účinné. Některé zdroje uvádějí obranu pomocí HTTP hlavičky Referer. Jedná se o hlavičku, která obsahuje URL předchozí stránky. Teoreticky bychom mohli zkontrolovat odkud požadavek pochází. „HTTP referer jde ale falšovat a dokonce se nemusí vůbec odesílat (nebo se může ztratit někde cestou – třeba v proxy).“[3] Účinnou obranou pro CSRF jsou tzv. autorizační tokeny nebo také podepsané formuláře. V principu se jedná o dočasnou proměnnou, která nabývá unikátní hodnoty a je přidělena konkrétnímu požadavku nebo formuláři. Server si dočasně hodnotu zapamatuje a pak porovnává tento token s tím, který je odesílán v požadavku do webové aplikace.

Obrana ze strany uživatele

Pokud není samotný server zabezpečený, uživatel má také několik možností, jak se chránit. Hlavní zásadou je chovat se obezřetně.

  • Odhlašovat se z aplikací po ukončení práce s nimi.
  • Při práci např. s internetovým bankovnictvím neotvírat žádná další okna nebo záložky ve stejném prohlížeči. [3]
  • Aplikace, u kterých si nejsme jisti bezpečností, otevírat v samotné instanci prohlížeče. [1]
  • Na internetové aplikace, které obsahují citlivá data, používat různé prohlížeče. [4]
  • Nepovolit prohlížeč ukládat uživatelské jméno a heslo; nepovolit stránkám pamatovat si přihlašovací jméno. [4]

Použitá literatura

  1. 1,0 1,1 VRÁNA, Jakub. PHP triky : Weblog o elegantním programování v PHP pro mírně pokročilé [online]. 24.4.2006 [cit. 2011-05-09]. Cross-Site Request Forgery. Dostupné z WWW: <http://php.vrana.cz/cross-site-request-forgery.php>.
  2. HOLČÁK, Radek. Autentizace uživatelů a krádež identity. Brno, 2009. 97 s. Diplomová práce. Masarykova univerzita, Fakulta informatiky. Vedoucí práce doc. RNDr. Václav Matyáš, M.Sc., Ph.D. Dostupné z WWW: <http://is.muni.cz/th/98688/fi_m/thesis.pdf?info>.
  3. 3,0 3,1 3,2 PEJŠA, Jan. Zdroják (zdrojak.root.cz) : tvorba webových stránek a aplik [online]. 24. 11. 2008 [cit. 2011-05-09]. Co je Cross-Site Request Forgery a jak se mu bránit. Dostupné z WWW: <http://zdrojak.root.cz/clanky/co-je-cross-site-request-forgery-a-jak-se-branit/>. ISSN 1803-5620.
  4. 4,0 4,1 PETERFISH, Paul; SHERIDAN, Eric; WICHERS, Dave. OWASP : The Open Web Application Security Project [online]. 12.10. 2009, 3.3. 2011 [cit. 2011-05-09]. Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet. Dostupné z WWW: <https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet>.