Impact
Een aanvaller die met succes misbruik maakt van een Cross-Site Scripting-kwetsbaarheid (XSS), kan zich voordoen als een slachtoffergebruiker, elke actie uitvoeren waartoe de gebruiker bevoegd is, en toegang krijgen tot de gegevens van de gebruiker [S1]. Dit omvat het stelen van sessiecookies om accounts te kapen, het vastleggen van inloggegevens via valse formulieren of het uitvoeren van virtuele defacement [S1][S2]. Als het slachtoffer beheerdersrechten heeft, kan de aanvaller volledige controle krijgen over de applicatie en de gegevens ervan [S1].
Oorzaak
XSS treedt op wanneer een toepassing door de gebruiker bestuurbare invoer ontvangt en deze opneemt in een webpagina zonder de juiste neutralisatie of codering van [S2]. Hierdoor kan de invoer door de browser van het slachtoffer worden geïnterpreteerd als actieve inhoud (JavaScript), waardoor het Same Origin Policy wordt omzeild dat is ontworpen om websites van elkaar te isoleren.
Soorten kwetsbaarheden
- Weergegeven XSS: Schadelijke scripts worden door een webapplicatie weerspiegeld in de browser van het slachtoffer, meestal via een URL-parameter [S1].
- Opgeslagen XSS: Het script wordt permanent opgeslagen op de server (bijvoorbeeld in een database of commentaarsectie) en wordt later aan gebruikers aangeboden [S1][S2].
- DOM-gebaseerd XSS: Het beveiligingslek bestaat volledig in code aan de clientzijde die gegevens van een niet-vertrouwde bron op een onveilige manier verwerkt, zoals schrijven naar
innerHTML[S1].
Betonreparaties
- Gegevens coderen bij uitvoer: Converteer door de gebruiker beheerbare gegevens naar een veilige vorm voordat deze wordt weergegeven. Gebruik HTML-entiteitscodering voor de HTML-body en de juiste JavaScript- of CSS-codering voor die specifieke contexten [S1][S2].
- Invoer filteren bij aankomst: Implementeer strikte toelatingslijsten voor verwachte invoerformaten en wijs alles af dat niet voldoet aan [S1][S2].
- Gebruik beveiligingsheaders: Stel de vlag
HttpOnlyin op sessiecookies om toegang via JavaScript [S2] te voorkomen. GebruikContent-TypeenX-Content-Type-Options: nosniffom ervoor te zorgen dat browsers reacties niet verkeerd interpreteren als uitvoerbare code [S1]. - Inhoudsbeveiligingsbeleid (CSP): Implementeer een sterke CSP om de bronnen te beperken van waaruit scripts kunnen worden geladen en uitgevoerd, waardoor een diepgaande verdedigingslaag [S1][S2] wordt geboden.
Hoe FixVibe erop test
FixVibe kan XSS detecteren via een meerlaagse aanpak gebaseerd op gevestigde scanmethodologieën [S1]:
- Passieve scans: Identificeren van ontbrekende of zwakke beveiligingsheaders zoals
Content-Security-PolicyofX-Content-Type-Optionsdie zijn ontworpen om XSS [S1] te beperken. - Actieve tests: Het injecteren van unieke, niet-schadelijke alfanumerieke tekenreeksen in URL-parameters en formuliervelden om te bepalen of deze worden weergegeven in de antwoordtekst zonder de juiste codering [S1].
- Repo-scans: JavaScript aan de clientzijde analyseren op "sinks" die niet-vertrouwde gegevens op onveilige wijze verwerken, zoals
innerHTML,document.writeofsetTimeout, wat algemene indicatoren zijn van op DOM gebaseerde XSS [S1].
