FixVibe
Covered by FixVibehigh

CSRF-beskerming: verdediging teen ongemagtigde staatsveranderinge

Cross-Site Request Forgery (CSRF) bly 'n beduidende bedreiging vir webtoepassings. Hierdie navorsing ondersoek hoe moderne raamwerke soos Django beskerming implementeer en hoe blaaiervlak-kenmerke soos SameSite verdediging in diepte bied teen ongemagtigde versoeke.

CWE-352

impak

Cross-Site Request Forgery (CSRF) laat 'n aanvaller toe om 'n slagoffer se blaaier te mislei om ongewenste handelinge uit te voer op 'n ander webwerf waar die slagoffer tans geverifieer is. Omdat blaaiers outomaties omringende geloofsbriewe soos koekies in versoeke insluit, kan 'n aanvaller staatsveranderende bewerkings bewerk - soos om wagwoorde te verander, data uit te vee of transaksies te begin - sonder die gebruiker se medewete.

Oorsaak

Die fundamentele oorsaak van CSRF is die webblaaier se verstekgedrag om koekies te stuur wat met 'n domein geassosieer word wanneer 'n versoek aan daardie domein gerig word, ongeag die versoek se oorsprong [S1]. Sonder spesifieke validering dat 'n versoek doelbewus vanaf die toepassing se eie gebruikerskoppelvlak geaktiveer is, kan die bediener nie onderskei tussen 'n wettige gebruikeraksie en 'n vervalste een nie.

Django CSRF-beskermingsmeganismes

Django bied 'n ingeboude verdedigingstelsel om hierdie risiko's te verminder deur middel van middelware en sjabloonintegrasie [S2].

Middelware-aktivering

Die django.middleware.csrf.CsrfViewMiddleware is verantwoordelik vir CSRF-beskerming en is tipies by verstek geaktiveer [S2]. Dit moet geposisioneer word voor enige aansigmiddelware wat aanvaar dat CSRF-aanvalle reeds hanteer is [S2].

Sjabloonimplementering

Vir enige interne POST-vorms moet ontwikkelaars die {% csrf_token %}-merker binne die <form>-element [S2] insluit. Dit verseker dat 'n unieke, geheime teken by die versoek ingesluit is, wat die bediener dan teen die gebruiker se sessie bekragtig.

Tekenlekkasierisiko's

'n Kritiese implementeringsdetail is dat die {% csrf_token %} nooit ingesluit moet word in vorms wat eksterne URL's [S2] teiken nie. Deur dit te doen, sal die geheime CSRF-token na 'n derde party uitlek, wat moontlik die gebruiker se sessiesekuriteit [S2] in gevaar stel.

Blaaiervlakverdediging: SameSite-koekies

Moderne blaaiers het die SameSite-kenmerk vir die Set-Cookie-kopskrif bekendgestel om 'n laag verdediging-in-diepte [S1] te verskaf.

  • Streng: Die koekie word slegs in 'n eersteparty-konteks gestuur, wat beteken dat die webwerf in die URL-balk ooreenstem met die koekie se domein [S1].
  • Laks: Die koekie word nie op kruiswerf-subversoeke (soos beelde of rame) gestuur nie, maar word gestuur wanneer 'n gebruiker na die oorsprongwerf navigeer, soos deur 'n standaardskakel [S1] te volg.

Hoe FixVibe daarvoor toets

FixVibe sluit nou CSRF-beskerming in as 'n omheinde aktiewe tjek. Na domeinverifikasie inspekteer active.csrf-protection ontdekte toestandsveranderende vorms, kontroleer vir CSRF-tekenvormige insette en SameSite-koekieseine, probeer dan 'n lae-impak vervalste-oorsprong indiening en rapporteer slegs wanneer die bediener dit aanvaar. Koekiekontroles vlag ook swak SameSite-kenmerke wat CSRF-verdediging-in-diepte verminder.