FixVibe
Covered by FixVibehigh

CORS Feilkonfigurasjon: Risiko for overdrevent tillatende retningslinjer

Cross-Origin Resource Sharing (CORS) er en nettlesermekanisme utviklet for å lempe på Same-Origin Policy (SOP). Selv om det er nødvendig for moderne nettapper, kan feil implementering – for eksempel å gjenta forespørslerens Origin-overskrift eller hviteliste «null»-opprinnelsen – tillate ondsinnede nettsteder å eksfiltrere private brukerdata.

CWE-942

Virkning

En angriper kan stjele sensitive, autentiserte data fra brukere av en sårbar applikasjon [S2]. Hvis en bruker besøker et ondsinnet nettsted mens han er logget på den sårbare appen, kan det skadelige nettstedet sende kryssopprinnelsesforespørsler til appens API og lese svarene [S1][S2]. Dette kan føre til tyveri av privat informasjon, inkludert brukerprofiler, CSRF-tokens eller private meldinger [S2].

Grunnårsak

CORS er en HTTP-header-basert mekanisme som lar servere spesifisere hvilke opprinnelser (domene, skjema eller port) som har tillatelse til å laste ressurser [S1]. Sårbarheter oppstår vanligvis når en servers CORS-policy er for fleksibel eller dårlig implementert [S2]:

  • Reflected Origin Header: Noen servere leser Origin-hodet fra en klientforespørsel og ekko det tilbake i Access-Control-Allow-Origin (ACAO)-svarhodet [S2]. Dette gir effektivt ethvert nettsted tilgang til ressursen [S2].
  • Feilkonfigurerte jokertegn: Mens jokertegnet * tillater ethvert opphav å få tilgang til en ressurs, kan det ikke brukes for forespørsler som krever legitimasjon (som informasjonskapsler eller autorisasjonshoder) [S3]. Utviklere prøver ofte å omgå dette ved å dynamisk generere ACAO-headeren basert på forespørselen [S2].
  • Hvitelisting 'null': Noen applikasjoner hvitlister null-opprinnelsen, som kan utløses av omdirigerte forespørsler eller lokale filer, slik at ondsinnede nettsteder kan maskere seg som en null-opprinnelse for å få tilgang ZXCVIXVIBETOKEN2ZVFXCVIZ.
  • Parsefeil: Feil i regex eller strengsamsvar ved validering av Origin-headeren kan tillate angripere å bruke domener som trusted-domain.com.attacker.com [S2].

Det er viktig å merke seg at CORS ikke er en beskyttelse mot Cross-Site Request Forgery (CSRF) [S2].

Betongrettinger

  • Bruk en statisk hviteliste: Unngå dynamisk generering av Access-Control-Allow-Origin-overskriften fra forespørselens Origin-overskrift [S2]. Sammenlign i stedet forespørselens opprinnelse med en hardkodet liste over klarerte domener [S3].
  • Unngå "null"-opprinnelsen: Inkluder aldri null i hvitelisten over tillatte opprinnelser [S2].
  • Begrens legitimasjon: Angi kun Access-Control-Allow-Credentials: true hvis det er absolutt nødvendig for den spesifikke kryssopprinnelsesinteraksjonen [S3].
  • Bruk riktig validering: Hvis du må støtte flere opprinnelser, sørg for at valideringslogikken for Origin-overskriften er robust og ikke kan omgås av underdomener eller domener med lignende utseende [S2].

Hvordan FixVibe tester for det

FixVibe inkluderer nå dette som en gated aktiv sjekk. Etter domeneverifisering sender active.cors API-forespørsler med samme opprinnelse med en syntetisk angriperopprinnelse og gjennomgår CORS-svarhoder. Den rapporterer reflektert vilkårlig opprinnelse, jokertegn-legitimasjon CORS og vidåpne CORS på ikke-offentlige API-endepunkter samtidig som man unngår støy fra offentlige eiendeler.