BLOG

Databeveiliging

Threat Modeling

13 februari 2023

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

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.

Vroeg in het proces

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.

Brainstormsessie

Er zijn verschillende stappen die ondernomen worden:

  1. In kaart brengen van de applicatie
  2. Gevaren identificeren
  3. Prioriteren
  4. Maatregelen

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.

1. In kaart brengen van de applicatie

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.

2. Gevaren identificeren

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. 

  • Vanuit de software – Hoe werkt software en wat voor problemen zien we daar vaak terug?
  • Vanuit de assets – Wat proberen we te beschermen? Pand, objecten, data?
  • Vanuit de aanvaller – Als ik het systeem zou willen aanvallen, hoe zou ik dat doen?

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:

  • Henk de hacker – professionele hacker, verdient geld met het stelen van data.
  • Scott de scripter – heeft weinig skills, maar gebruikt tools die hij gevonden heeft op het internet om vrij willekeurig te hacken.
  • Domme Diana – Collega die niet goed oplet. Wil iedereen helpen, maar maakt daarbij fouten.
  • Boze Bart –  Collega die het systeem goed kent. Wil wraak nemen.
  • Ontevreden Onno – Klant die niet tevreden is over de dienstverlening. Wil het bedrijf in kwaad daglicht stellen.

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. 

3. Prioriteren

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:

  • Damage – Hoeveel schade brengt het aan?
  • Reproducibility – Hoe makkelijk of aannemelijk is?
  • Exploitability – Hoeveel werk is het?
  • Affected users – Hoeveel gebruikers hebben er last van?
  • Discoverability – Hoe makkelijk is het te achterhalen dat het heeft plaatsgevonden?

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.

4. Maatregelen

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.

Uitdagingen

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.

Meer informatie?

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 designWil je meer weten over threat modeling? Neem dan contact op met Christian. Hij wil je er graag alles over vertellen.

Interesse in een gesprek?

neem contact op met Christian Peeters

Laat uw gegevens achter

We nemen contact met u op!



Zie onze privacyverklaring.