FixVibe
Covered by FixVibehigh

CSRF aizsardzība: aizsardzība pret nesankcionētām stāvokļa izmaiņām

Cross-Site Request Forgery (CSRF) joprojām ir nozīmīgs drauds tīmekļa lietojumprogrammām. Šis pētījums pēta, kā mūsdienu sistēmas, piemēram, Django, ievieš aizsardzību un kā pārlūkprogrammas līmeņa atribūti, piemēram, SameSite, nodrošina padziļinātu aizsardzību pret nesankcionētiem pieprasījumiem.

CWE-352

Ietekme

Cross-Site Request Forgery (CSRF) ļauj uzbrucējam piemānīt upura pārlūkprogrammu, lai tā veiktu nevēlamas darbības citā vietnē, kurā upuris pašlaik ir autentificēts. Tā kā pārlūkprogrammas pieprasījumos automātiski iekļauj apkārtējās vides akreditācijas datus, piemēram, sīkfailus, uzbrucējs bez lietotāja ziņas var viltot stāvokļa maiņas darbības, piemēram, mainīt paroles, dzēst datus vai sākt darījumus.

Galvenais cēlonis

CSRF galvenais iemesls ir tīmekļa pārlūkprogrammas noklusējuma darbība, sūtot ar domēnu saistītus sīkfailus ikreiz, kad šim domēnam tiek veikts pieprasījums, neatkarīgi no pieprasījuma izcelsmes [S1]. Bez īpašas pārbaudes, ka pieprasījums tika tīši aktivizēts no pašas lietojumprogrammas lietotāja interfeisa, serveris nevar atšķirt likumīgu lietotāja darbību un viltotu darbību.

Django CSRF aizsardzības mehānismi

Django nodrošina iebūvētu aizsardzības sistēmu, lai mazinātu šos riskus, izmantojot starpprogrammatūru un veidņu integrāciju [S2].

Starpprogrammatūras aktivizēšana

django.middleware.csrf.CsrfViewMiddleware ir atbildīgs par CSRF aizsardzību, un tas parasti ir iespējots pēc noklusējuma [S2]. Tas ir jānovieto pirms jebkura skata starpprogrammatūra, kas pieņem, ka CSRF uzbrukumi jau ir apstrādāti. [S2].

Veidnes ieviešana

Visām iekšējām POST veidlapām izstrādātājiem ir jāiekļauj tags {% csrf_token %} elementā <form> [S2]. Tas nodrošina, ka pieprasījumā ir iekļauts unikāls, slepens marķieris, kuru serveris pēc tam pārbauda, ​​salīdzinot ar lietotāja sesiju.

Žetonu noplūdes riski

Svarīga ieviešanas detaļa ir tāda, ka {% csrf_token %} nekad nedrīkst iekļaut veidlapās, kuru mērķauditorija tiek atlasīta ārējiem URL [S2]. Šādi rīkojoties, slepenā CSRF pilnvara tiktu nodota trešajai pusei, potenciāli apdraudot lietotāja sesijas drošību [S2].

Pārlūka līmeņa aizsardzība: SameSite sīkfaili

Mūsdienu pārlūkprogrammās ir ieviests atribūts SameSite galvenei Set-Cookie, lai nodrošinātu padziļinātas aizsardzības slāni [S1].

  • Stingri: sīkfails tiek nosūtīts tikai pirmās puses kontekstā, kas nozīmē, ka vietne URL joslā atbilst sīkfaila domēnam [S1].
  • Lax: sīkfails netiek sūtīts pēc vairāku vietņu apakšpieprasījumiem (piemēram, attēliem vai kadriem), bet tiek nosūtīts, kad lietotājs pāriet uz sākuma vietni, piemēram, sekojot standarta saitei [S1].

Kā FixVibe to pārbauda

FixVibe tagad ietver CSRF aizsardzību kā ierobežotu aktīvo pārbaudi. Pēc domēna verifikācijas active.csrf-protection pārbauda atklātās statusa maiņas veidlapas, pārbauda CSRF marķiera formas ievades un SameSite sīkfailu signālus, pēc tam mēģina veikt zemas ietekmes viltotas izcelsmes iesniegšanu un ziņo tikai tad, kad serveris to pieņem. Sīkfailu pārbaudes arī atzīmē vājus SameSite atribūtus, kas samazina CSRF aizsardzību.