FixVibe
Covered by FixVibehigh

CORS Napačna konfiguracija: Tveganja preveč permisivnih pravilnikov

Skupna raba virov navzkrižnega izvora (CORS) je mehanizem brskalnika, zasnovan za sprostitev politike istega izvora (SOP). Čeprav je potrebna za sodobne spletne aplikacije, lahko neustrezna izvedba, kot je ponavljanje naslova Origin vlagatelja zahteve ali dodajanje »ničelnega« izvora na seznam dovoljenih, zlonamernim mestom omogoči, da izločijo zasebne uporabniške podatke.

CWE-942

Vpliv

Napadalec lahko ukrade občutljive, overjene podatke od uporabnikov ranljive aplikacije [S2]. Če uporabnik obišče zlonamerno spletno mesto, medtem ko je prijavljen v ranljivo aplikacijo, lahko zlonamerno spletno mesto pošlje navzkrižne zahteve API aplikacije in prebere odgovore [S1][S2]. To lahko vodi do kraje zasebnih podatkov, vključno z uporabniškimi profili, žetoni CSRF ali zasebnimi sporočili [S2].

Temeljni vzrok

CORS je mehanizem, ki temelji na glavi HTTP in omogoča strežnikom, da določijo, katerim izvorom (domena, shema ali vrata) je dovoljeno nalaganje virov [S1]. Ranljivosti se običajno pojavijo, ko je pravilnik CORS strežnika preveč prilagodljiv ali slabo implementiran [S2]:

  • Reflected Origin Header: Nekateri strežniki preberejo glavo Origin iz zahteve odjemalca in jo ponovijo nazaj v glavi odgovora Access-Control-Allow-Origin (ACAO) [S2]. To dejansko omogoča kateremu koli spletnemu mestu dostop do vira [S2].
  • Napačno konfigurirani nadomestni znaki: Čeprav nadomestni znak * dovoljuje kateremu koli izvoru dostop do vira, ga ni mogoče uporabiti za zahteve, ki zahtevajo poverilnice (kot so piškotki ali avtorizacijske glave) [S3]. Razvijalci pogosto poskušajo to zaobiti z dinamičnim generiranjem glave ACAO na podlagi zahteve [S2].
  • Dodajanje na seznam dovoljenih 'null': Nekatere aplikacije dodajo izvor null na beli seznam, ki ga lahko sprožijo preusmerjene zahteve ali lokalne datoteke, kar omogoča zlonamernim mestom, da se zamaskirajo kot izvor null in pridobijo dostop [S2][S3].
  • Napake pri razčlenjevanju: Napake pri ujemanju regularnega izraza ali niza pri preverjanju glave Origin lahko napadalcem omogočijo uporabo domen, kot je trusted-domain.com.attacker.com [S2].

Pomembno je omeniti, da CORS ni zaščita pred ponarejanjem zahtev med spletnimi mesti (CSRF) [S2].

Betonski popravki

  • Uporabite statični beli seznam: Izogibajte se dinamičnemu ustvarjanju glave Access-Control-Allow-Origin iz glave Origin zahteve [S2]. Namesto tega primerjajte izvor zahteve s trdo kodiranim seznamom zaupanja vrednih domen [S3].
  • Izogibajte se 'ničelnemu' izvoru: null nikoli ne vključite v dovoljeni seznam dovoljenih izvorov [S2].
  • Omeji poverilnice: Access-Control-Allow-Credentials: true nastavite samo, če je to nujno potrebno za določeno interakcijo navzkrižnega izvora [S3].
  • Uporabite ustrezno preverjanje: Če morate podpirati več izvorov, zagotovite, da je logika preverjanja za glavo Origin robustna in je ne morejo zaobiti poddomene ali podobne domene [S2].

Kako ga FixVibe testira

FixVibe to zdaj vključuje kot zaprti aktivni ček. Po preverjanju domene active.cors pošlje zahteve API istega izvora s sintetičnim izvorom napadalca in pregleda glave odgovorov CORS. Poroča o poljubnih izvorih, CORS z nadomestnimi znaki in široko odprtim CORS na nejavnih končnih točkah API, pri čemer se izogiba šumu javnih sredstev.