FixVibe
Covered by FixVibehigh

CSRF-beskyttelse: Forsvar mot uautoriserte tilstandsendringer

Cross-Site Request Forgery (CSRF) er fortsatt en betydelig trussel mot webapplikasjoner. Denne forskningen utforsker hvordan moderne rammeverk som Django implementerer beskyttelse og hvordan attributter på nettlesernivå som SameSite gir et dyptgående forsvar mot uautoriserte forespørsler.

CWE-352

Virkning

Cross-Site Request Forgery (CSRF) lar en angriper lure et offers nettleser til å utføre uønskede handlinger på et annet nettsted der offeret for øyeblikket er autentisert. Fordi nettlesere automatisk inkluderer omgivelseslegitimasjon som informasjonskapsler i forespørsler, kan en angriper forfalske tilstandsendre operasjoner – som å endre passord, slette data eller starte transaksjoner – uten brukerens viten.

Grunnårsak

Den grunnleggende årsaken til CSRF er nettleserens standardoppførsel for å sende informasjonskapsler knyttet til et domene når en forespørsel sendes til det domenet, uavhengig av forespørselens opprinnelse [S1]. Uten spesifikk validering av at en forespørsel ble utløst med hensikt fra applikasjonens eget brukergrensesnitt, kan ikke serveren skille mellom en legitim brukerhandling og en forfalsket handling.

Django CSRF-beskyttelsesmekanismer

Django tilbyr et innebygd forsvarssystem for å redusere disse risikoene gjennom mellomvare og malintegrasjon [S2].

Mellomvareaktivering

django.middleware.csrf.CsrfViewMiddleware er ansvarlig for CSRF-beskyttelse og er vanligvis aktivert som standard [S2]. Den må plasseres før noen visningsmellomvare som antar at CSRF-angrep allerede er håndtert [S2].

Malimplementering

For alle interne POST-skjemaer må utviklere inkludere {% csrf_token %}-taggen inne i <form>-elementet [S2]. Dette sikrer at et unikt, hemmelig token er inkludert i forespørselen, som serveren deretter validerer mot brukerens økt.

Token-lekkasjerisiko

En kritisk implementeringsdetalj er at {% csrf_token %} aldri skal inkluderes i skjemaer som er målrettet mot eksterne nettadresser [S2]. Å gjøre det vil lekke det hemmelige CSRF-tokenet til en tredjepart, og potensielt kompromittere brukerens øktsikkerhet [S2].

Forsvar på nettlesernivå: SameSite-informasjonskapsler

Moderne nettlesere har introdusert SameSite-attributtet for Set-Cookie-headeren for å gi et lag med forsvar i dybden [S1].

  • Streng: Informasjonskapselen sendes kun i en førstepartskontekst, noe som betyr at nettstedet i URL-linjen samsvarer med informasjonskapselens domene [S1].
  • Laks: Informasjonskapselen sendes ikke på underforespørsler på tvers av nettsteder (som bilder eller rammer), men sendes når en bruker navigerer til opprinnelsesnettstedet, for eksempel ved å følge en standardlenke [S1].

Hvordan FixVibe tester for det

FixVibe inkluderer nå CSRF-beskyttelse som en gated aktiv sjekk. Etter domeneverifisering inspiserer active.csrf-protection oppdagede skjemaer som endrer tilstand, sjekker for CSRF-token-formede innganger og SameSite-informasjonskapselsignaler, og forsøker deretter en innsending med lav innvirkning forfalsket opprinnelse og rapporterer bare når serveren godtar det. Cookie-sjekker flagger også svake SameSite-attributter som reduserer CSRF-forsvaret i dybden.