Deze week behandelen we XSS. We krijgen als cybersecurity bedrijf ook best vaak de vraag wat is cross-site scripting? Om die vraag te beantwoorden schrijven we wekelijks deze blogs. Zoals u van ons gewend bent leggen we dit uit in een taal die iedereen begrijpt. Dus als u straks bij de koffieautomaat iemand hoort praten over een cross-site scripting aanval, dan weet u meteen waar het over gaat.

Wat is cross-site scripting?

Cross-site scripting, ofwel XSS, is een type aanval waarbij injectie een hoofdrol speelt. Aanvallers injecteren kwaadwillende scripts in websites en applicaties. Op die manier hopen ze het apparaat van de gebruiker (dus u) te kunnen bemachtigen. Tijdens deze aanval maakt de aanvaller gebruik van niet-gevalideerde input (dus gegevens ingevoerd door u de gebruiker) om de outputs te wijzigen. Wat opvallend is aan XSS-aanvallen is dat er soms geen specifiek doelwit is. Aanvallers vinden een kwetsbaarheid op een website of applicatie en exploiteren deze. Met als gevolg het misbruik maken van iemand die gewoon pech heeft.

Er zijn echter ook veel gevallen waarbij XSS veel directer wordt gebruikt. Hierbij moet u denken aan bijvoorbeeld een e-mail. Een XSS-aanval kan een webtoepassing of website veranderen in een vector om kwaadaardige scripts naar de webbrowsers van nietsvermoedende slachtoffers te sturen. Feitelijk maken XSS-aanvallen misbruik van kwetsbaarheden in tal van programmeeromgevingen. Zoals bijvoorbeeld Flash of JavaScript. Zoals u begrijpt maakt nagenoeg elke website of applicatie gebruik van deze scripts. Dit maakt XSS-aanvallen zowel gevaarlijk als ook heel algemeen voorkomend. Des te belangrijker om als organisatie goed op de hoogte te zijn van het gevaar dat dit met zich meebrengt.

Om het wat simpeler te maken het volgende voorbeeld. Alle websites die u op dagelijkse basis bezoekt hebben 1 ding gemeen, ze maken allemaal gebruik van JavaScript. U zit lekker te browsen en ziet een interessante advertentie. U klikt erop en bent nu op de pagina van de advertentie. U leest het eens rustig door en overweegt een bestelling. Wat u echter op dit moment niet doorhebt is dat de pagina een script bevat dat verbinding maakt met een site voor online bankieren en stilletjes geld overmaakt van het account van de gebruiker naar de kaart van de aanvaller. Laten we eerlijk zijn, dit zou uw dag een beetje verpesten.

Wat zijn de gevolgen van cross-site scripting?

Een succesvolle XSS-aanval kan vergaande gevolgen hebben bij zowel applicaties of websites. Zo hebben aanvallers de mogelijkheid om:

  • Het lezen van alle gegevens en uitvoeren van willekeurige acties door zich voor te doen als de gebruiker. Dergelijke acties kunnen het plaatsen op sociale media of het uitvoeren van banktransacties omvatten.
  • Onderscheppen van gebruikersinvoer.
  • Injecteren van kwaadaardige code in webpagina’s. Dergelijke functionaliteit doet misschien denken aan Trojaanse paarden, inclusief nepformulieren voor het invoeren van inloggegevens of het betalen voor online bestellingen.

Het is ook mogelijk om cross-site scripting aanvallen te gebruiken op een veel indirectere manier. Deze worden vaak ingezet voor bijvoorbeeld financieel voordeel. Serieuze XSS-aanvallen kunnen daarmee ook gebruikt worden om bijvoorbeeld advertentie informatie in te sluiten of zelfs om internetbeoordelingen te manipuleren. Dit geeft een goed beeld van hoe breed ‘inzetbaar’ een XSS-aanval kan zijn.

Hoe voorkom je XSS-aanvallen?

Afhankelijk van de complexiteit van de website of applicatie kan het nog best lastig zijn om cross-site scripting aanvallen te voorkomen. Er zijn echter zeker wel stappen die ondernomen kunnen worden om XSS-kwetsbaarheden aan te pakken. Excuses van onze kant, het gaat nu een beetje technisch worden.

  • Filter gebruikersinput. Op het punt waar gebruikersinvoer wordt ontvangen, filter zo strikt mogelijk op basis van wat wordt verwacht of op basis van geldige invoer.
  • Codeer gegevens bij uitvoer. Op het punt waar door de gebruiker bestuurbare gegevens worden uitgevoerd in HTTP-reacties, codeert u de uitvoer om te voorkomen dat deze wordt geïnterpreteerd als actieve inhoud. Afhankelijk van de uitvoercontext kan het nodig zijn om combinaties van HTML-, URL-, JavaScript- en CSS-codering toe te passen.
  • Inhoudsbeveiligingsbeleid. Als laatste verdedigingslinie kunt u Content Security Policy (CSP) gebruiken om de ernst van eventuele XSS-kwetsbaarheden die nog steeds optreden te verminderen.

Gelukkig zijn er over het algemeen al veel maatregelen tegen XSS-aanvallen geïmplementeerd bij browsers en applicaties. Maar als deze maatregelen 100% effectief waren, dan was dit artikel niet nodig. Dan zou cross-site scripting ook niet op de 7e plaats staan in de OWASP top-10. Het is daarom goed om op de hoogte te zijn van de gevaren die XSS-aanvallen met zich meebrengen.

Wilt u meer weten over deze vorm van aanvallen of hoe Rootsec u kan helpen met de beveiliging hiertegen? Neem dan eens contact met ons op. Dit kan via de website of door even te bellen met ons op 036 760 0451.