Home / Blog / Applicatieontwikkeling / Het beveiligen van webapplicaties en de OWASP Top 10
Ransomware, phishing, identity theft, botnets, datalekken. Ze zijn aan de orde van de dag. Als software ontwikkelaar is het van belang dat je beveiliging op orde is. De beveiliging van je organisatie, je laptop, je servers en natuurlijk je webapplicatie zelf. Een van de hulpmiddelen om je webapplicatie veilig te bouwen is de OWASP Top 10.
OWASP is de afkorting van Open Web Application Security Project. Dit is een open source project rondom beveiliging op het internet. Ze organiseren evenementen, geven trainingen, delen informatie en leveren tools. Elke 4 jaar publiceren ze de Top 10 van de grootste beveiligingsuitdagingen bij het bouwen van websites. Als ontwikkelaar dien je deze maar beter te kennen en op de hoogte te zijn van de maatregelen die je kunt nemen om de uitdagingen het hoofd te bieden. Eind 2021 is er een nieuwe versie van de OWASP Top 10 uitgekomen. Hoogste tijd om te kijken wat op dit moment de 10 grootste beveiligingsrisico’s zijn.
Een aantal opvallende zaken: Er is een nieuwe nummer 1! Sinds jaar en dag was de nummer 1 “Injection”. Nu is het niet zo dat injection niet meer voorkomt, maar deze uitdaging is gezakt naar plaats 3. Ook hebben we 3 nieuwe binnenkomers, zijn er enkele zaken samengevoegd en hebben een aantal onderdelen een andere naam gekregen.
Hieronder zie je de Top 10 en hoe de zaken veranderd zijn sinds 2017.
Laten we kijken naar de verschillende categorieën in de 2021 Top 10.
Een webapplicatie bevat over het algemeen een vorm van toegangsbeheer. Een gebruiker krijgt bepaalde toegangsrechten. Wanneer het mogelijk is dat een gebruiker toegang krijgt tot informatie zonder dat dit de bedoeling is, dan spreken we over “broken access control”.
Deze categorie is maar liefst 4 plekken gestegen van nr. 5 in 2017 naar nr. 1 in 2021. Van de geteste applicaties bevatte 94% een vorm van “broken access control”. Dat is schokkend veel! Het is wel een behoorlijk brede categorie. Je toegangsbeheer kan op verschillende manieren kwetsbaar zijn. Hierbij kun je denken aan:
Mogelijke oplossingen en tips:
Informatie dient in de meeste situaties beveiligd te worden. Afhankelijk van de gegevens zijn er verschillende eisen voor wat betreft opslag en transport (over de lijn). Denk hierbij bijvoorbeeld aan de AVG. In de meeste gevallen zal de data versleuteld verstuurd worden (HTTPS), maar ook bij de opslag van gegevens komt vaak versleuteling kijken.
Hier kunnen veel fouten gemaakt worden:
Ondanks dat deze categorie 2 plekken gezakt is, wil dat niet zeggen dat Injection minder voor komt. Sterker nog: 94% van de geteste applicaties was kwetsbaar voor een vorm van Injection.
Er zijn een aantal bekende manier van injection.
De hoogste nieuwe binnenkomer in de 2021 Top 10 is onveilig ontwerp. Bij een onveilig ontwerp kan er natuurlijk ontzettend veel mis gaan. Dit onderwerp is daarom meer gericht op het proces dan op specifieke technische zaken. Bij het ontwerpen van software wordt hoofdzakelijk gedacht aan functionaliteiten en infrastructuur. Het wordt echter steeds belangrijker om vanaf het allereerste stadium rekening te houden met en na te denken over beveiliging. Dus voordat er code geschreven wordt, moet de beveiligingsoplossing duidelijk zijn.
In deze categorie worden de beveiligingsproblemen ondergebracht die te maken hebben met verkeerde configuratie. Over het algemeen zijn dit dus geen fouten in de programmacode, maar door verkeerde of ontbrekende instellingen van frameworks of servers ontstaat er een onveilige situatie. Voorbeelden hiervan zijn:
Bij het ontwikkelen van software wordt zeer veelvuldig gebruik gemaakt van externe frameworks en libraries. Dit maakt het mogelijk om effectief software te ontwikkelen en gebruik te maken van herbruikbare software onderdelen waarbij complexe functionaliteit door een specifiek component wordt uitgevoerd. Dit kunnen open-source componenten zijn, maar ook componenten van betaalde leveranciers. Dergelijke componenten krijgen functionele updates, maar ook beveiligingsproblemen worden opgelost. Het is een groot gevaar dat de componenten in de webapplicatie niet worden bijgewerkt naar de laatste versie wanneer dergelijke (beveiligings)updates worden uitgebracht. Er is immers een bekend beveiligingslek en de webapplicatie is dus kwetsbaar. Het is een grote uitdaging om van alle gebruikte componenten in de gaten te houden:
Toch is het aan te raden om gebruik te maken van externe componenten. Omdat ze vaak een specifiek probleem oplossen en er met een (grote) groep ontwikkelaars aan gewerkt wordt, is de beveiliging vaak goed op orde. Als er problemen mee zijn worden die snel opgespoord en opgelost.
In deze categorie vallen alle zaken rondom authenticatie, oftewel problemen bij het achterhalen wie de gebruiker is. Dit heeft hoofdzakelijk te maken met problemen rondom het inlogproces.
Denk hierbij aan:
Deze categorie is nieuw in de OWASP Top 10. De beveiligingsproblemen in deze categorie hebben betrekking op het gebruik maken van externe software, zoals componenten, data of CI/CD pipelines zonder de integriteit te controleren.
Dit onderwerp heeft betrekking op het loggen van gebeurtenissen en het monitoren van deze logs. Naast het loggen van foutmeldingen is het ook erg belangrijk om authenticatie te loggen. Wanneer er zich een beveiligingsprobleem heeft voorgedaan, is het belangrijk te weten wie, waar en wat er gebeurd is. Ook is het goed om te beseffen dat alleen het loggen niet de oplossing is. Er moet ook naar de log gekeken worden en dan bij voorkeur geautomatiseerd, zodat continu in de gaten gehouden wordt of er (combinaties van) gebeurtenissen plaatsvinden waarop actie ondernomen moet worden. Ook volgens wet- en regelgeving zoals AVG is logging in veel gevallen verplicht. Deze moet dus ook op een adequate wijze worden opgeslagen en beveiligd.
Bij beveiligingsproblemen kun je denken aan:
Niet te verwarren met de bekende Cross-Site Request Forgery die in de OWASP Top 10 van 2013 nog aanwezig was.
Het komt vaak voor dat verschillende software systemen met elkaar communiceren. Het is ook niet ongebruikelijk dat het mogelijk is om in een webapplicatie een URL op te geven naar een extern systeem (API), waar de betreffende applicatie gegevens kan uitvragen. Een “Server-side request” wordt dan dus uitgevoerd. Echter wanneer de URL niet afdoende gecontroleerd of gelimiteerd wordt, is het mogelijk om hier misbruik van te maken:
De OWASP Top 10 is dus belangrijke kennis voor elke ontwikkelaar. Maar daar moet het natuurlijk niet bij blijven.
De OWASP Top 10 is een belangrijk hulpmiddel, maar uiteraard is het van belang om professionele software ontwikkelaars en/of beveiligingsspecialisten te betrekken bij de ontwikkeling en het onderhoud van software oplossingen. Wilt u meer inzicht in uw (software) situatie? Met onze Senet Scan kunnen wij uw bestaande software scannen op kwetsbaarheden maar ook op kwaliteit en interacties met andere applicaties.
We nemen contact met u op!
Senet Eindhoven Gestelsestraat 258 5654 AM Eindhoven Bekijk op kaart
+31(0)40-2930395
KvK nummer: 17115078 Btw nummer: NL807989083B01