Vplyv
Cross-Site Request Forgery (CSRF) umožňuje útočníkovi oklamať prehliadač obete, aby vykonal nechcené akcie na inej webovej stránke, kde je obeť práve overená. Keďže prehliadače do požiadaviek automaticky zahŕňajú prihlasovacie údaje prostredia, ako sú súbory cookie, útočník môže falšovať operácie, ktoré menia stav – ako je zmena hesiel, vymazanie údajov alebo spustenie transakcií – bez vedomia používateľa.
Hlavná príčina
Základnou príčinou CSRF je predvolené správanie webového prehliadača pri odosielaní súborov cookie priradených k doméne vždy, keď sa odošle požiadavka na túto doménu, bez ohľadu na pôvod žiadosti [S1]. Bez špecifického overenia, že požiadavka bola spustená zámerne z vlastného používateľského rozhrania aplikácie, server nedokáže rozlíšiť medzi legitímnou akciou používateľa a falošnou akciou.
Ochranné mechanizmy Django CSRF
Django poskytuje vstavaný obranný systém na zmiernenie týchto rizík prostredníctvom integrácie middlewaru a šablón [S2].
Aktivácia middlewaru
django.middleware.csrf.CsrfViewMiddleware je zodpovedný za ochranu CSRF a je štandardne povolený [S2]. Musí byť umiestnený pred akýmkoľvek zobrazovacím middleware, ktorý predpokladá, že útoky CSRF už boli spracované [S2].
Implementácia šablóny
V prípade akýchkoľvek interných formulárov POST musia vývojári zahrnúť značku {% csrf_token %} do prvku <form> [S2]. To zaisťuje, že v požiadavke bude zahrnutý jedinečný tajný token, ktorý potom server overí na základe relácie používateľa.
Riziká úniku tokenov
Zásadným detailom implementácie je, že {% csrf_token %} by nikdy nemal byť zahrnutý do formulárov zacielených na externé adresy URL [S2]. Ak by ste tak urobili, došlo by k úniku tajného tokenu CSRF tretej strane, čo by potenciálne ohrozilo bezpečnosť relácie používateľa [S2].
Obrana na úrovni prehliadača: Súbory cookie SameSite
Moderné prehliadače zaviedli atribút SameSite pre hlavičku Set-Cookie, aby poskytli vrstvu hĺbkovej ochrany [S1].
- Prísne: Súbor cookie sa odosiela iba v kontexte prvej strany, čo znamená, že stránka na paneli s adresou URL sa zhoduje s doménou súboru cookie [S1].
- Lax: Súbor cookie sa neposiela na podžiadosti viacerých stránok (ako sú obrázky alebo rámce), ale odosiela sa, keď používateľ prejde na pôvodnú stránku, napríklad pomocou štandardného odkazu [S1].
Ako to testuje FixVibe
FixVibe teraz obsahuje ochranu CSRF ako hradlovanú aktívnu kontrolu. Po overení domény active.csrf-protection skontroluje objavené formuláre meniace stav, skontroluje vstupy v tvare tokenu CSRF a signály súborov cookie SameSite, potom sa pokúsi o odoslanie falošného pôvodu s nízkym dopadom a nahlási iba vtedy, keď ho server prijme. Kontroly súborov cookie tiež označujú slabé atribúty SameSite, ktoré znižujú hĺbkovú ochranu CSRF.
