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 iAccess-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 ennull-opprinnelse for å få tilgang ZXCVIXVIBETOKEN2ZVFXCVIZ. - Parsefeil: Feil i regex eller strengsamsvar ved validering av
Origin-headeren kan tillate angripere å bruke domener somtrusted-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ørselensOrigin-overskrift [S2]. Sammenlign i stedet forespørselens opprinnelse med en hardkodet liste over klarerte domener [S3]. - Unngå "null"-opprinnelsen: Inkluder aldri
nulli hvitelisten over tillatte opprinnelser [S2]. - Begrens legitimasjon: Angi kun
Access-Control-Allow-Credentials: truehvis 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.
