FixVibe
Covered by FixVibehigh

CORS Verkeerde configuratie: risico's van overdreven toegeeflijk beleid

Cross-Origin Resource Sharing (CORS) is een browsermechanisme dat is ontworpen om het Same-Origin Policy (SOP) te versoepelen. Hoewel noodzakelijk voor moderne web-apps, kan onjuiste implementatie (zoals het herhalen van de Origin-header van de aanvrager of het op de witte lijst zetten van de 'null'-oorsprong) ervoor zorgen dat kwaadwillende sites privégebruikersgegevens kunnen exfiltreren.

CWE-942

Impact

Een aanvaller kan gevoelige, geauthenticeerde gegevens stelen van gebruikers van een kwetsbare applicatie [S2]. Als een gebruiker een kwaadwillende website bezoekt terwijl hij is ingelogd bij de kwetsbare app, kan de kwaadwillende site cross-origin-verzoeken doen aan de API van de app en de antwoorden [S1][S2] lezen. Dit kan leiden tot de diefstal van privégegevens, waaronder gebruikersprofielen, CSRF-tokens of privéberichten [S2].

Oorzaak

CORS is een op HTTP-header gebaseerd mechanisme waarmee servers kunnen specificeren welke oorsprong (domein, schema of poort) de bronnen [S1] mag laden. Kwetsbaarheden ontstaan doorgaans wanneer het CORS-beleid van een server te flexibel is of slecht geïmplementeerd [S2]:

  • Gereflecteerde Origin-header: Sommige servers lezen de Origin-header van een clientverzoek en echoën deze terug in de Access-Control-Allow-Origin (ACAO)-antwoordheader [S2]. Hierdoor heeft elke website effectief toegang tot de bron [S2].
  • Verkeerd geconfigureerde jokertekens: Hoewel het jokerteken * elke oorsprong toegang geeft tot een bron, kan het niet worden gebruikt voor verzoeken waarvoor inloggegevens nodig zijn (zoals cookies of autorisatieheaders) [S3]. Ontwikkelaars proberen dit vaak te omzeilen door de ACAO-header dynamisch te genereren op basis van het verzoek [S2].
  • Whitelisting 'null': Sommige toepassingen zetten de oorsprong van null op de witte lijst, die kan worden geactiveerd door omgeleide verzoeken of lokale bestanden, waardoor kwaadwillende sites zich kunnen voordoen als een null-oorsprong om toegang te krijgen tot [S2][S3].
  • Parsingfouten: Fouten in regex- of tekenreeksmatching bij het valideren van de Origin-header kunnen aanvallers in staat stellen domeinen zoals trusted-domain.com.attacker.com [S2] te gebruiken.

Het is belangrijk op te merken dat CORS geen bescherming biedt tegen Cross-Site Request Forgery (CSRF) [S2].

Betonreparaties

  • Gebruik een statische witte lijst: Vermijd het dynamisch genereren van de Access-Control-Allow-Origin-header uit de Origin-header [S2] van de aanvraag. Vergelijk in plaats daarvan de oorsprong van het verzoek met een hardgecodeerde lijst met vertrouwde domeinen [S3].
  • Vermijd de 'null'-oorsprong: Neem null nooit op in uw witte lijst met toegestane oorsprongen [S2].
  • Inloggegevens beperken: Stel Access-Control-Allow-Credentials: true alleen in als dit absoluut noodzakelijk is voor de specifieke cross-origin-interactie [S3].
  • Gebruik de juiste validatie: Als u meerdere oorsprongen moet ondersteunen, zorg er dan voor dat de validatielogica voor de Origin-header robuust is en niet kan worden omzeild door subdomeinen of soortgelijke domeinen [S2].

Hoe FixVibe erop test

FixVibe bevat dit nu als een gated actieve controle. Na domeinverificatie verzendt active.cors API-verzoeken van dezelfde oorsprong met een synthetische aanvaller-oorsprong en beoordeelt CORS-antwoordheaders. Het rapporteert een weerspiegelde willekeurige oorsprong, CORS met jokertekens en wijd open CORS op niet-openbare API-eindpunten, terwijl ruis van openbare activa wordt vermeden.