Home / Blog / Databeveiliging / Threat Modeling
Het voorkomen van datalekken en andere beveiligingsproblemen is van het grootste belang. Toch komt regelmatig in het nieuws dat er gegevens gestolen zijn of dat er organisaties grote problemen hebben door ransomware. Blijkbaar is het moeilijk om alle risico’s afdoende in te dammen. Threat modeling is een manier om gestructureerd en vroegtijdig risico’s in kaart te brengen en op te lossen. Of beter nog… te voorkomen.
Het doel van threat modeling is dus om een overzicht te krijgen van alle mogelijke gevaren (threats). Dit kunnen technische oorzaken zijn, bijvoorbeeld in de code van de software. Maar het kunnen zeker ook menselijke oorzaken zijn. Denk hierbij bijvoorbeeld aan een gebruiker die (onbedoeld) gegevens uit het systeem aanpast of verwijdert zonder dat het opgemerkt wordt of te herstellen is. Een ander voorbeeld is social engineering waarbij hackers de gebruikers van de software manipuleren.
Bij threat modeling ga je niet nadenken over ‘use cases‘ maar over ‘abuse cases‘. Overigens is threat modeling niet alleen van toepassing op software. Je kunt het ook toepassen op het beveiligen van andere zaken zoals objecten en panden.
Aangezien voorkomen beter is dan genezen, is het belangrijk om zo vroeg mogelijk te beginnen met threat modeling. Bij voorkeur zelfs voordat je begint met het technische ontwerp van de applicatie. Wanneer je op de hoogte bent van alle mogelijke gevaren, kun je hier vervolgens rekening mee houden tijdens het ontwerp van de applicatie.
Vaak blijft software in ontwikkeling. Telkens blijven er nieuwe functionaliteiten bij komen en worden er aanpassingen doorgevoerd aan het bestaande product. Daarom is het ook aan te raden om regelmatig threat modeling sessies te organiseren, bijvoorbeeld (half)jaarlijks, bij het ontwikkelen van een grote nieuwe feature of een aanpassing in de architectuur.
Er zijn verschillende stappen die ondernomen worden:
Om een goed beeld te krijgen van de applicatie, de gevaren en de maatregelen is het belangrijk om meerdere disciplines en stakeholders bij elkaar te brengen. Een software engineer denkt immers anders dan een gebruiker, en een infrastructuur specialist ziet weer andere dingen dan de privacy officer. Een brainstormsessie waarbij alle disciplines vertegenwoordigd zijn is en effectieve manier van threat modeling.
Het begint met het in kaart brengen van hoe de applicatie gaat werken of inmiddels al is opgebouwd. Vaak zijn er diverse “Security boundaries”, oftewel plekken waar verschillende systemen met elkaar verbonden zijn. Op dergelijke plekken is het systeem vaak kwetsbaar, dus dat kan een goed uitgangspunt zijn.
Dit is onmiskenbaar het lastigste onderdeel. Hoe bepaal je nu welke gevaren er eigenlijk zijn? Daar zijn verschillende manieren voor. Je kunt gaan denken vanuit verschillende perspectieven.
Vaak gebruiken we een combinatie van deze perspectieven.
Om je hierbij te helpen bepaal je tijdens een threat modeling sessie wat de “gevaarlijke personen” zijn. Welke personen kunnen potentieel een gevaar vormen voor de applicatie? Dit kan bewust zijn (hacker), maar ook onbewust (collega die niet goed oplet). Gebruik hier makkelijke namen voor zodat iedereen er zich iets bij kan voorstellen en eenvoudig kan plaatsen. Bijvoorbeeld:
Zo zijn er voor elke situatie verschillende personen te bedenken die een rol kunnen spelen. Vervolgens wordt er gekeken welke acties de gevaarlijke personen zouden kunnen uitvoeren. Deze worden middels post-its (fysiek of digitaal) geplaatst op het systeem.
Het is belangrijk is om zoveel mogelijk zaken te benoemen, ook al zijn ze niet ze niet waarschijnlijk of erg moeilijk. In de volgende stap wordt namelijk bekeken hoe we om moeten gaan met de geïdentificeerde gevaren.
Nu in kaart is gebracht welke problemen zich kunnen voordoen, is het belangrijk om prioriteit aan te brengen. Ook hiervoor zijn verschillende manieren om dit gestructureerd te doen. Gebruik hiervoor bijvoorbeeld het DREAD model. Dit is een afkorting voor:
Voor elk gevonden gevaar bepaal je een score van 1 t/m 3 op de vijf DREAD onderdelen. Door de scores te middelen krijg je een overzichtelijk schema met zaken die de meeste aandacht nodig hebben.
Je kunt eventueel afspreken dat alles onder een bepaalde totaalscore een ingecalculeerd risico is. Als de schade immers beperkt is, de kans erg klein is en er weinig gebruikers last van hebben, dan is het wellicht niet interessant om er veel tijd in te stoppen.
Documenteer de uitkomsten van de threat modeling sessie goed. De uitkomsten heb je nodig bij het nemen van maatregelen, maar ook om ervan te leren en beter te worden in het vinden van gevaren. Bij sommige organisaties is het ook onderdeel van bepaalde certificeringen of het informatiebeveiligingsbeleid.
Na een succesvolle threat modeling sessie heb je een overzicht van de gevaren en welke prioriteit ze hebben. Bij het ontwikkelen van een nieuwe applicatie of functionaliteit ga je hier rekening mee houden om te voorkomen dat het gevaar daadwerkelijk misbruikt wordt. Bij een bestaande applicatie ga je de gevaren oplossen, kijkend naar de prioriteit. Uiteraard is het dan belangrijk om bij te houden welke van de gedocumenteerde gevaren opgelost zijn.
Wanneer je voor het eerst een threat modeling sessie organiseert, dan zijn er een aantal uitdagingen. Heb je de juiste groep stakeholders aan tafel? Snapt iedereen hoe het werkt? Slaan mensen door in te specifieke details of komt er juist te weinig diepgang? Wordt er direct in oplossingen gedacht in plaats van het richten op identificatie? Plan daarom vaker deze sessies, dit bevordert de effectiviteit.
Senet is gespecialiseerd in het bouwen en beheren van software. Daarbij is beveiliging altijd de eerste prioriteit. Hierbij gebruiken we diverse methodieken zoals threat modeling en Pivacy by Design. Kijk hiervoor ook eens naar onze blogpost Privacy by design. Wil je meer weten over threat modeling? Neem dan contact op met Christian. Hij wil je er graag alles over vertellen.
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