FixVibe
Covered by FixVibehigh

CSRF-kaitse: kaitsmine volitamata olekumuutuste eest

Saidiülene päringu võltsimine (CSRF) on veebirakendustele endiselt oluline oht. See uuring uurib, kuidas tänapäevased raamistikud, nagu Django, rakendavad kaitset ja kuidas brauseritaseme atribuudid, nagu SameSite, pakuvad põhjalikku kaitset volitamata päringute eest.

CWE-352

Mõju

Cross-Site Request Forgery (CSRF) võimaldab ründajal meelitada ohvri brauserit tegema soovimatuid toiminguid teisel veebisaidil, kus ohver on parajasti autentitud. Kuna brauserid lisavad päringutesse automaatselt ümbritsevaid mandaate, nagu küpsised, võib ründaja kasutaja teadmata võltsida olekut muutvaid toiminguid, nagu paroolide muutmine, andmete kustutamine või tehingute algatamine.

Algpõhjus

CSRF-i põhipõhjus on veebibrauseri vaikekäitumine, mille käigus saadetakse domeeniga seotud küpsiseid alati, kui sellele domeenile tehakse päring, olenemata päringu päritolust. [S1]. Ilma konkreetse kinnituseta, et taotlus käivitati tahtlikult rakenduse enda kasutajaliidese kaudu, ei saa server eristada õigustatud kasutajatoimingut võltsitud toimingust.

Django CSRF-i kaitsemehhanismid

Django pakub nende riskide maandamiseks sisseehitatud kaitsesüsteemi vahevara ja mallide integreerimise kaudu [S2].

Vahevara aktiveerimine

django.middleware.csrf.CsrfViewMiddleware vastutab CSRF-kaitse eest ja on tavaliselt vaikimisi lubatud [S2]. See tuleb paigutada enne mis tahes vaate vahevara, mis eeldab, et CSRF-rünnakuid on juba käsitletud. [S2].

Malli juurutamine

Kõigi sisemiste POST-vormide puhul peavad arendajad lisama elemendi <form> [S2] sisse märgendi {% csrf_token %}. See tagab, et päringule lisatakse kordumatu salajane luba, mille server seejärel kasutaja seansi suhtes valideerib.

Märkide lekkeriskid

Rakenduse oluline detail on see, et {% csrf_token %} ei tohiks kunagi sisalduda vormides, mis sihivad väliseid URL-e [S2]. Seda tehes lekitaks salajane CSRF-märk kolmandale osapoolele, mis võib kahjustada kasutaja seansi turvalisust [S2].

Brauseritaseme kaitse: sama saidi küpsised

Kaasaegsetes brauserites on Set-Cookie päise jaoks kasutusele võetud atribuut SameSite, et pakkuda [S1] põhjalikku kaitsekihti.

  • Ranged: küpsis saadetakse ainult esimese osapoole kontekstis, mis tähendab, et URL-i riba sait vastab küpsise domeenile [S1].
  • Lax: küpsist ei saadeta saidiüleste alamtaotluste korral (nt pildid või raamid), vaid see saadetakse siis, kui kasutaja navigeerib algsaidile, näiteks järgides standardset linki [S1].

Kuidas FixVibe seda testib

FixVibe sisaldab nüüd CSRF-kaitset kui suletud aktiivset kontrolli. Pärast domeeni kinnitamist kontrollib active.csrf-protection avastatud olekut muutvaid vorme, kontrollib CSRF-i märgikujulisi sisendeid ja SameSite'i küpsise signaale, seejärel proovib vähese mõjuga võltsitud päritolu esitamist ja annab teada ainult siis, kui server selle vastu võtab. Küpsisekontrollid märgivad ka nõrgad SameSite'i atribuudid, mis vähendavad CSRF-i kaitset.