Cross-Site Request Forgery (CSRF) is een van de oudste manieren om misbruik te maken van de kwetsbaarheden van een website. Het richt zich op webswitches aan de serverzijde die meestal authenticatie vereisen, zoals inloggen. Tijdens een CSRF-aanval probeert een aanvaller zijn slachtoffer te dwingen namens hem een ongeautoriseerd, kwaadaardig webverzoek in te dienen.
Zwakke of slechte websitebeveiliging en onzorgvuldigheid op het pad van de gebruiker zijn enkele van de meest voorkomende oorzaken van een succesvolle CSRF-aanval.
Laten we eens kijken wat een CSRF-aanval is en de mogelijke manieren waarop u dit als ontwikkelaar of als gebruiker kunt voorkomen.
Welke gevolgen hebben CSRF-aanvallen voor u?
Een CSRF is een aanval die wordt gebruikt om ongeautoriseerde verzoeken te implementeren tijdens webacties waarvoor gebruikersaanmelding of authenticatie vereist is. CSRF-aanvallen kunnen profiteren van sessie-ID's, cookies en andere servergebaseerde kwetsbaarheden om de inloggegevens van een gebruiker te stelen.
Door bijvoorbeeld anti-CSRF-procedures in te schakelen, worden kwaadaardige interacties tussen domeinen voorkomen.
Zodra die barrière doorbreekt, kan een aanvaller snel profiteren van de sessie-ID van de gebruiker via de cookies die door de browser van de gebruiker zijn gemaakt en een scripttag in de kwetsbare website insluiten.
Door een ID te manipuleren, kan de aanvaller bezoekers ook omleiden naar een andere webpagina of misbruik maken social engineering-methoden zoals e-mail om links te verzenden, waarbij het slachtoffer wordt aangemoedigd om kwaadaardige software te downloaden.
Ontdek welke invloed social engineering op u kan hebben, plus veelvoorkomende voorbeelden om u te helpen bij het identificeren en voorkomen van deze regelingen.
Zodra het slachtoffer dergelijke acties uitvoert, stuurt het een HTTP-verzoek naar de servicepagina van de gebruiker en autoriseert het de verzoekactie ten gunste van de aanvaller. Dat kan verwoestend zijn voor een nietsvermoedende gebruiker.
Een succesvolle CSRF-aanval kan ertoe leiden dat geautoriseerde gebruikers hun toegangsreferenties voor een aanvaller verliezen, vooral tijdens servergebaseerde acties zoals verzoeken om wachtwoorden of gebruikersnaam te wijzigen. In slechtere scenario's neemt de aanvaller de hele sessie over en handelt hij namens gebruikers.
CSRF is gebruikt om via het web geldtransacties te kapen en om gebruikersnamen en wachtwoorden te wijzigen, waardoor gebruikers de toegang tot de betrokken service verliezen.
Hoe aanvallers uw sessies kapen met CSRF: voorbeelden
De belangrijkste doelen voor CSRF-aanvallen zijn webacties waarbij de authenticatie van een gebruiker betrokken is. Om succesvol te zijn, zijn onbedoelde acties van het slachtoffer nodig.
Tijdens een CSRF-aanval zijn GET-, DELETE- en PUT-acties, evenals kwetsbare POST-verzoeken het belangrijkste doelwit van een aanvaller.
Laten we eens kijken naar de betekenis van die termen:
- KRIJGEN: Een verzoek om een resultaat uit de database te verzamelen; bijvoorbeeld Google zoeken.
- POST: Meestal voor het indienen van verzoeken via webformulieren. Een POST-verzoek is gebruikelijk tijdens de registratie of login van een gebruiker, ook wel bekend als authenticatie.
- VERWIJDEREN: Om een bron uit de database te verwijderen. U doet dit telkens wanneer u uw account verwijdert van een bepaalde webservice.
- ZETTEN: Een PUT-verzoek wijzigt of actualiseert een bestaande bron. Een voorbeeld is het wijzigen van uw Facebook-naam.
In de praktijk gebruiken aanvallers sessie-kaping om een back-up te maken van een CSRF-aanval. Bij gebruik van deze combinatie kan de aanvaller een kaping gebruiken om het IP-adres van het slachtoffer te wijzigen.
De wijziging in IP-adres logt vervolgens het slachtoffer in op een nieuwe website waar de aanvaller een bedrieglijke link heeft ingevoegd die een gerepliceerd formulier of een aangepast serververzoek indient dat ze via CSRF hebben gemaakt.
Een nietsvermoedende gebruiker denkt dan dat de omleiding van de serviceprovider komt en klikt op de link op de webpagina van de aanvaller. Zodra ze dit hebben gedaan, dienen hackers een formulier in bij het laden van de pagina zonder hun medeweten.
Voorbeeld van een GET Request CSRF-aanval
Stel je voor dat je probeert een online betaling uit te voeren via een onbeveiligd e-commerceplatform. De platformeigenaren gebruiken het GET-verzoek om uw transactie te verwerken. Die GET-query kan er als volgt uitzien:
https://websiteurl/pay? amount = $ 10 & company = [account van bedrijf ABC]
Een kaper kan uw transactie gemakkelijk stelen door de parameters van het GET-verzoek te wijzigen. Om dit te doen, hoeven ze alleen maar uw naam in te ruilen voor die van hen, en erger nog, het bedrag te wijzigen dat u van plan bent te betalen. Vervolgens passen ze de oorspronkelijke vraag aan tot zoiets als dit:
https://websiteurl/pay? amount = $ 20000 & company = [account van de aanvaller]
Zodra u op een link naar dat gewijzigde GET-verzoek klikt, maakt u uiteindelijk een onbedoelde overdracht naar het account van de aanvaller.
Transacties uitvoeren via GET-verzoeken is een slechte gewoonte en maakt activiteiten kwetsbaar voor aanvallen.
Voorbeeld van een POST-aanvraag CSRF-aanval
Veel ontwikkelaars zijn echter van mening dat het gebruik van POST-verzoeken veiliger is voor het uitvoeren van webtransacties. Hoewel dat waar is, is een POST-verzoek helaas ook vatbaar voor CSRF-aanvallen.
Om een POST-verzoek met succes te kapen, heeft een aanvaller alleen uw huidige sessie-ID, enkele gerepliceerde onzichtbare formulieren en soms een beetje social engineering nodig.
Een POST-aanvraagformulier kan er bijvoorbeeld als volgt uitzien:
Een aanvaller kan uw inloggegevens echter omwisselen door een nieuwe pagina te maken en het bovenstaande formulier hierin te wijzigen:
In de gemanipuleerde vorm stelt de aanvaller de waarde van het veld aantal in op "30000", wisselt de rekeningnummer van de ontvanger bij het hunne, verzendt het formulier bij het laden van de pagina en verbergt ook de formuliervelden voor de gebruiker.
Zodra ze die huidige sessie kapen, initieert uw transactiepagina een omleiding naar de pagina van de aanvaller, die u vraagt op een link te klikken waarvan ze weten dat u deze waarschijnlijk zult bezoeken.
Als u hierop klikt, wordt de verzending van het gerepliceerde formulier geladen, waarmee uw geld wordt overgemaakt naar de account van de aanvaller. Dat betekent dat u niet op knoppen zoals "verzenden" hoeft te klikken om de transactie te laten plaatsvinden, aangezien JavaScript dit automatisch doet bij het laden van de volgende webpagina.
Als alternatief kan een aanvaller ook een in HTML ingesloten e-mail opstellen waarin u wordt gevraagd op een link te klikken om dezelfde pagina te laden.
Een andere actie die kwetsbaar is voor een CSRF-aanval is het wijzigen van een gebruikersnaam of wachtwoord, een voorbeeld van een PUT-verzoek. Een aanvaller repliceert uw aanvraagformulier en vervangt uw e-mailadres door dat van hen.
Vervolgens stelen ze uw sessie en verwijzen ze u door naar een pagina of sturen ze u een e-mail waarin u wordt gevraagd op een aantrekkelijke link te klikken.
Dat verzendt vervolgens een gemanipuleerd formulier dat de link voor het opnieuw instellen van het wachtwoord naar het e-mailadres van de hacker stuurt in plaats van het jouwe. Op die manier verandert de hacker uw wachtwoord en logt u uit bij uw account.
Hoe CSRF-aanvallen als ontwikkelaar te voorkomen
Een van de beste methoden om een CSRF te voorkomen, is door regelmatig wisselende tokens te gebruiken in plaats van afhankelijk te zijn van sessiecookies voor het uitvoeren van een statuswijziging op de server.
Verwant: Gratis handleidingen om digitale beveiliging te begrijpen en uw privacy te beschermen
Veel moderne backend-frameworks bieden beveiliging tegen CSRF. Dus als je de technische aspecten van je strijd tegen CSRF zelf wilt vermijden, kun je dit eenvoudig aanpakken door server-side frameworks te gebruiken die worden geleverd met ingebouwde anti-CSRF-tokens.
Wanneer u een anti-CSRF-token gebruikt, genereren servergebaseerde verzoeken willekeurige strings in plaats van de meer statische kwetsbare sessiecookies. Op die manier kunt u uw sessie beschermen tegen raden door de kaper.
Het implementeren van een tweefactorauthenticatiesysteem (2FA) voor het uitvoeren van transacties op uw webapp verkleint ook de kans op een CSRF.
Het is mogelijk om een CSRF te starten via cross-site scripting (XSS), waarbij scripts in gebruikersvelden worden geïnjecteerd, zoals commentaarformulieren. Om dit te voorkomen, is het een goede gewoonte om HTML auto-escape in alle gebruikersformuliervelden op uw website in te schakelen. Die actie voorkomt dat formuliervelden HTML-elementen interpreteren.
Hoe CSRF-aanvallen als gebruiker te voorkomen
Als gebruiker van een webservice waarbij authenticatie betrokken is, heb je een rol te spelen bij het voorkomen dat aanvallers ook je inloggegevens en sessies via CSRF stelen.
Zorg ervoor dat u vertrouwde webservices gebruikt tijdens activiteiten waarbij geld wordt overgemaakt.
Gebruik daarnaast beveiligde webbrowsers die gebruikers beschermen tegen blootstelling aan sessies, evenals beveiligde zoekmachines die beschermen tegen lekken van zoekgegevens.
Verwant: Beste privézoekmachines die uw gegevens respecteren
Als gebruiker kunt u ook vertrouwen op verificatiemiddelen van derden, zoals Google Authenticator of zijn alternatieven voor het verifiëren van uw identiteit via internet.
Hoewel u zich misschien hulpeloos voelt om te voorkomen dat een aanvaller uw sessie kapot maakt, kunt u toch helpen voorkom dit door ervoor te zorgen dat uw browser geen informatie zoals wachtwoorden en andere aanmeldingsgegevens opslaat details.
Verbeter uw webbeveiliging
Ontwikkelaars moeten webapps regelmatig testen op beveiligingsinbreuken tijdens de ontwikkeling en implementatie.
Het is echter gebruikelijk om andere kwetsbaarheden te introduceren terwijl u andere probeert te voorkomen. Zorg er dus voor dat u geen andere beveiligingsparameters hebt geschonden terwijl u een CSRF probeert te blokkeren.
Maak een sterk wachtwoord dat u later kunt onthouden. Gebruik deze apps om uw beveiliging vandaag nog te upgraden met nieuwe sterke wachtwoorden.
- Veiligheid
- Online beveiliging
Idowu is gepassioneerd door alles wat met slimme technologie en productiviteit te maken heeft. In zijn vrije tijd speelt hij met coderen en schakelt hij over naar het schaakbord als hij zich verveelt, maar hij houdt er ook van om af en toe de routine te doorbreken. Zijn passie om mensen de weg te wijzen in moderne technologie, motiveert hem om meer te schrijven.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.