Threat modeling biedt verschillende voordelen:

  1. Proactieve beveiliging: Door bedreigingen in een vroeg stadium te identificeren, kunnen ontwikkelaars beveiligingsmaatregelen implementeren voordat een systeem wordt ontwikkeld. Dit zorgt ervoor dat de kans op bedreigingen verkleind wordt.
  2. Kostenbesparing: Het oplossen van beveiligingsproblemen tijdens de ontwerpfase is meestal minder kostbaar dan het oplossen van problemen nadat een systeem is geïmplementeerd.
  3. Verbeterde Kwaliteit: Een goed uitgevoerd threat model kan helpen bij het verbeteren van de algehele kwaliteit van een systeem door zwakke plekken te identificeren en te versterken.

Trust boundaries


Binnen een threat model worden trust boundaries gebruikt om grenzen van verschillende niveaus van vertrouwen binnen een applicatie aan te geven. Deze grenzen zijn cruciaal in threat modeling omdat ze helpen om de plekken te identificeren waar gegevens van de ene veiligheidszone naar de andere overgaan.

Soorten trust boundaries

  • Tussen een gebruiker en een webapplicatie: Bijvoorbeeld waar een gebruiker inlogt op een website.
  • Binnen een applicatie: Zoals tussen verschillende modules of microservices die verschillende niveaus van vertrouwelijkheid hebben.
  • Tussen systemen: Bijvoorbeeld tussen een webserver en een database server.

Waar zet je ze neer?

Om erachter te komen waar je het beste trust boundaries kan plaatsen kan je gebruik maken van STRIDE

STRIDE is een methodologie voor het identificeren van beveiligingsrisico’s in een systeem. Het staat voor Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, en Elevation of Privilege.

Hier is hoe je STRIDE zou kunnen implementeren in je threat modeling proces:

  1. Identificeer de actoren en assets: Begin met het identificeren van de actoren (gebruikers, systemen, processen) die interactie hebben met je systeem en de assets (data, diensten, infrastructuur) die beschermd moeten worden.
  2. Analyseer elke component: Voor elke component van je systeem, analyseer de mogelijke bedreigingen volgens de zes categorieën van STRIDE:
    • Spoofing: Kan een actor zich voordoen als een andere actor?
    • Tampering: Kan een actor de data of de configuratie van het systeem wijzigen?
    • Repudiation: Kan een actor een actie ontkennen die ze hebben uitgevoerd?
    • Information Disclosure: Kan een actor toegang krijgen tot informatie die ze niet zouden moeten hebben?
    • Denial of Service: Kan een actor de beschikbaarheid van het systeem beïnvloeden?
    • Elevation of Privilege: Kan een actor meer rechten krijgen dan ze zouden moeten hebben?
  3. Prioriteer de bedreigingen: Gebruik een risicoanalyse om de geïdentificeerde bedreigingen te prioriteren op basis van hun waarschijnlijkheid en impact.
  4. Ontwikkel mitigaties: Voor elke geïdentificeerde bedreiging, ontwikkel een plan om de bedreiging te mitigeren. Dit kan technische oplossingen omvatten zoals encryptie en toegangscontrole, evenals organisatorische maatregelen zoals training en bewustwording.
  5. Implementeer de mitigaties: Integreer de geplande mitigaties in het ontwikkelingsproces van het systeem.
  6. Herzie het model regelmatig: Bedreigingen veranderen voortdurend, dus het is belangrijk om je threat model regelmatig bij te werken om nieuwe bedreigingen en veranderingen in het systeem aan te pakken.

Een goed voorbeeld van waar trust boundaries zich kunnen bevinden is tussen een browser en een applicatie. In het onderstaande voorbeeld ligt de trust boundary tussen de browser en Showcase client project en Showcase API project. Dit betekent dat er een potentieel beveiligingsrisico bestaat tussen deze onderdelen.

Opvallend is dat er geen trust boundary aanwezig is tussen Showcase API project en de Database. Dit gaat er dus vanuit dat de API-endpoints de enige toegang tot de database zijn. Echter, in de praktijk kan iemand via de computer waarop Showcase API project draait, toegang krijgen tot de database. Hoewel het onderstaande schema dit niet aangeeft, is dit wel een reëel scenario. Daarom zou je ervoor kunnen kiezen om een trust boundary te plaatsen tussen Showcase API project en de Database. Dit zorgt ervoor dat ook deze risico’s worden meegenomen in het beveiligingsrapport en de uiteindelijke maatregelen.

Een andere plek waar een trust boundary kan voortkomen is tussen Showcase API project en een externe API zoals Google reCAPTCHA of een service zoals Sendgrid. Een trust boundary moeten worden geplaatst tussen verschillende actoren of systemen waarin onderlinge communicatie plaatsvindt.

Wat hoort er wel en niet bij het threat model?


Bij het threat model horen:

  • Actoren: Identificatie van wie interactie heeft met het systeem (gebruikers, beheerders, aanvallers?, interne en externe systemen).
  • Assets: Beschrijving van wat er beschermd moet worden (data, diensten, infrastructuur).
  • Bedreigingen: Specifieke scenario’s waarin een actor een asset kan bedreigen.
  • Mitigaties: Bestaande of geplande beveiligingsmaatregelen die deze bedreigingen kunnen verminderen.

Niet bij het threat model horen:

  • Gedetailleerde implementatie-specificaties: Threat modeling richt zich op de architectuur en het ontwerp, niet op de daadwerkelijke code.
  • Externe bronnen zonder invloed op het systeem: Elementen die geen directe interactie of impact op het systeem hebben, worden meestal buiten beschouwing gelaten.

Wat doe je met de resultaten van het threat model?


De resultaten van een threat model zorgen voor waardevolle inzichten die direct gebruikt kunnen worden om de beveiliging van een systeem te verbeteren.

De belangrijkste stappen na het opstellen van een threat model zijn:

  1. Risicoanalyse: Prioriteren van de geïdentificeerde bedreigingen op basis van het risico.
  2. Mitigatieplanning: Ontwikkelen van plannen en maatregelen om de geïdentificeerde risico’s te verminderen.
  3. Beveiligingsmaatregelen implementeren: Implementeren van de beveiligingsmaatregelen in het ontwikkelingsproces.
  4. Continu monitoren en updaten: Het threat model regelmatig bijwerken om nieuwe bedreigingen en veranderingen in het systeem aan te pakken.

Risico analyse

Risicoanalyse houdt in dat de geïdentificeerde bedreigingen worden geprioriteerd op basis van hun waarschijnlijkheid en impact. Dit helpt om te bepalen welke bedreigingen de grootste risico’s vormen en dus als eerste moeten worden aangepakt.

Meer over de risicoanalyse is te vinden in 3. Uitleg analyseren requirements.

Mitigatieplanning

Mitigatieplanning gaat over het ontwikkelen van gedetailleerde plannen en maatregelen om de geïdentificeerde risico’s te verminderen. Dit kan variëren van technische oplossingen zoals encryptie en toegangscontrole tot organisatorische maatregelen zoals training en bewustwording.

Beveiligingsmaatregelen implementeren

Het implementeren van beveiligingsmaatregelen houdt in dat de geplande maatregelen daadwerkelijk worden geïntegreerd in het ontwikkelingsproces van het systeem. Dit kan het schrijven van veilige code, het configureren van beveiligingsinstellingen, en het gebruik van beveiligingstools en -services omvatten.

Continu monitoren en updaten

Continu monitoren en updaten houdt in dat het threat model regelmatig wordt herzien en bijgewerkt om nieuwe bedreigingen en veranderingen in het systeem aan te pakken. Dit is essentieel om ervoor te zorgen dat het systeem veerkrachtig blijft tegen nieuwe en opkomende bedreigingen.

Tools voor threat modeling

Er zijn veel tools voor het maken van een threat model beschikbaar. Binnen HBO-ICT wordt voornamelijk gebruikt gemaakt van Microsoft Threat Modeling Tool. Een uitleg van deze tool is te vinden op deze pagina: Handleiding Microsoft Threat Modeling Tool. Een alternatief is OWASP Threat Dragon.

Bronnen

STRIDE: https://owasp.org/www-community/Threat_Modeling_Process#stride
Microsoft Threat Modeling Tool: https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool


Volgende stap: Threat Model naar mitigatie