Inzicht in bedreigingsmodellering

Voltooid

Threat modeling is een belangrijk element van de Microsoft Security Development Lifecycle (SDL) en een fundamentele beveiligingspraktijk voor het bouwen van beveiligde toepassingen. Het is een technische techniek waarmee u systematisch bedreigingen, aanvallen, beveiligingsproblemen en tegenmaatregelen kunt identificeren die van invloed kunnen zijn op uw toepassing.

Wat is threat modeling?

Doel: Threat modeling biedt een gestructureerde benadering voor het begrijpen van beveiligingsrisico's in uw toepassing. In plaats van te hopen dat u aan alle mogelijke beveiligingsproblemen hebt gedacht, begeleidt bedreigingsmodellering u door een systematisch proces om bedreigingen te identificeren en op te lossen.

Voordelen: U kunt threat modeling gebruiken om het volgende te doen:

  • Toepassingsontwerp vormgeven: Architectuurbeslissingen beïnvloeden op basis van beveiligingsoverwegingen, in plaats van beveiliging achteraf toe te voegen.
  • Voldoen aan beveiligingsdoelen: Zorg ervoor dat uw toepassing voldoet aan de beveiligingsdoelstellingen en nalevingsvereisten van uw organisatie.
  • Risico beperken: Verminder beveiligingsrisico's systematisch door bedreigingen tijdens het ontwerp te identificeren en aan te pakken in plaats van ze in productie te detecteren.
  • Prioriteit geven aan beveiligingswerkzaamheden: Richt de beveiligingsinspanningen op de belangrijkste bedreigingen in plaats van alles tegelijk aan te pakken.
  • Beveiligingsproblemen communiceren: Bied een algemene taal voor ontwikkelaars, beveiligingsteams en belanghebbenden om de beveiliging te bespreken.

Toegankelijkheid: De aanpak is ontworpen met niet-beveiligingsexperts in het achterhoofd. Bedreigingsmodellering is toegankelijk voor alle ontwikkelaars, niet alleen beveiligingsspecialisten, via duidelijke richtlijnen voor het maken en analyseren van bedreigingsmodellen.

Het proces voor bedreigingsmodellering in vijf fasen

Bedreigingsmodellering volgt een systematisch proces in vijf fasen:

Diagram met de vijf fasen voor bedreigingsmodellering: Beveiligingsvereisten definiëren, toepassingsarchitectuur diagram, bedreigingen identificeren, bedreigingen beperken en risicobeperking valideren.

1. Beveiligingsvereisten definiëren

Beveiligingsdoelen vaststellen: Voordat u bedreigingen analyseert, moet u verduidelijken wat beveiliging betekent voor uw toepassing:

Vertrouwelijkheidsvereisten:

  • Welke gegevens moeten vertrouwelijk blijven?
  • Wie moet toegang hebben tot gevoelige informatie?
  • Hoe lang moeten gegevens vertrouwelijk blijven?
  • Wat zijn de gevolgen van vertrouwelijkheidsschendingen?

Integriteitsvereisten:

  • Welke gegevens of bewerkingen moeten worden beschermd tegen niet-geautoriseerde wijzigingen?
  • Hoe detecteert u of er met gegevens is geknoeid?
  • Wat zijn de gevolgen van integriteitsschendingen?

Beschikbaarheidsvereisten:

  • Welke uptimegaranties zijn nodig?
  • Wat is acceptabele downtime voor verschillende onderdelen?
  • Wat is de bedrijfsimpact van onbeschikbaarheid?

Nalevingsvereisten:

  • Welke wettelijke vereisten zijn van toepassing (AVG, HIPAA, PCI DSS, enzovoort)?
  • Aan welke industrienormen moet worden voldaan (ISO 27001, SOC 2, enzovoort)?
  • Welke contractuele beveiligingsverplichtingen bestaan er met klanten?

Voorbeeldvereisten: "Betalingsgegevens van de klant moeten vertrouwelijk blijven. Alleen geautoriseerde betalingsverwerkingssystemen hebben toegang tot deze gegevens. Alle toegang moet worden geregistreerd voor controledoeleinden. Gegevens moeten worden versleuteld tijdens overdracht en bij stilstand.

2. Een toepassingsdiagram maken

Uw architectuur visualiseren: Maak een diagram dat de architectuur van uw toepassing weergeeft, met:

Systeemonderdelen:

  • Webservers, toepassingsservers, databases, microservices.
  • Externe services en API's waar uw toepassing van afhankelijk is.
  • Verificatie- en autorisatiesystemen.
  • Load balancers, cachelagen, berichtenwachtrijen.

Gegevensstromen:

  • Hoe gegevens worden verplaatst tussen onderdelen.
  • Welke gegevens elke verbinding verzendt.
  • Richting van gegevensstroom.
  • Gegevenstransformatiepunten.

Beveiligingsgrenzen:

  • Vertrouwensgrenzen waarbij bevoegdheidsniveaus veranderen.
  • Netwerkgrenzen tussen verschillende beveiligingszones.
  • Procesgrenzen tussen verschillende uitvoeringscontexten.
  • Fysieke grenzen tussen verschillende locaties of cloudomgevingen.

Voorbeeldelementen:

  • Gebruikers die verbinding maken via internet.
  • Web Application Firewall aan de netwerkrand.
  • Webservers in een DMZ.
  • Toepassingsservers in een beveiligd netwerk.
  • Databaseservers in een zeer beperkt netwerk.
  • Externe betalingsgateway voor het verwerken van transacties.

3. Bedreigingen identificeren

Systematische bedreigingsidentificatie: Gebruik gestructureerde benaderingen om mogelijke bedreigingen te identificeren:

STRIDE-methodologie: STRIDE is een bedreigingscategorisatieframework:

  • Spoofing: Bedreigingen met betrekking tot identiteitsimitatie.
  • Tampering: Bedreigingen die te maken hebben met ongeautoriseerde wijziging van data.
  • R-epudiation: bedreigingen waarbij gebruikers het uitvoeren van acties weigeren.
  • Informatie openbaarmaking: bedreigingen met onbevoegde toegang tot informatie.
  • Denial of Service: Bedreigingen die voorkomen dat legitieme gebruikers toegang hebben tot systemen.
  • E-levationof Privilege: Bedreigingen waarbij gebruikers onbevoegde machtigingen krijgen.

STRIDE toepassen op gegevensstromen: Bekijk elke gegevensstroom in uw diagram en kijk hoe elke STRIDE-categorie van toepassing kan zijn:

  • Kan een aanvaller de bron van deze gegevens spoofen?
  • Kunnen deze gegevens tijdens verzending of opslag worden gemanipuleerd?
  • Kunnen legitieme acties op deze gegevensstroom worden ontkend?
  • Kunnen gevoelige informatie via deze stroom worden vrijgegeven?
  • Kan deze stroom worden gebruikt om Denial of Service te veroorzaken?
  • Kan deze stroom worden misbruikt om verhoogde bevoegdheden te verkrijgen?

Veelvoorkomende bedreigingsvoorbeelden:

  • SQL-injectie: Aanvaller bewerkt databasequery's via niet-sanitized gebruikersinvoer (manipulatie, openbaarmaking van informatie, uitbreiding van bevoegdheden).
  • Sessiekaaping: Aanvaller steelt sessietokens om gebruikers te imiteren (spoofing, uitbreiding van bevoegdheden).
  • Man-in-the-middle: Aanvaller onderschept communicatie tussen onderdelen (openbaarmaking van informatie, manipulatie).
  • DDoS-aanval: Aanvaller overweldigt systemen met verkeer (Denial of Service).

4. Bedreigingen beperken

Tegenmaatregelen ontwikkelen: Ontwikkel voor elke geïdentificeerde bedreiging de juiste oplossingen:

Risicobeperkingsstrategieën:

  • Uitschakelen: Verwijder het kwetsbare onderdeel of de functie volledig als dit niet essentieel is.
  • Verhinderen: Implementeer besturingselementen die de bedreiging onmogelijk maken (bijvoorbeeld invoervalidatie voorkomt injectieaanvallen).
  • Detecteren: Implementeer bewaking en waarschuwingen om bedreigingsuitbuitingspogingen te detecteren.
  • Reageren: Ontwikkel incidentresponsprocedures voor wanneer bedreigingen worden misbruikt.

Voorbeelden van oplossingen:

  • SQL-injectierisico: Gebruik geparameteriseerde query's en invoervalidatie om injectieaanvallen te voorkomen.
  • Bedreiging voor sessiekaaping: Implementeer beveiligd sessiebeheer met HTTPS, beveiligde cookies en korte sessietime-outs.
  • Man-in-the-middle bedreiging: TLS afdwingen voor alle communicatie en het vastmaken van certificaten implementeren.
  • DDoS-bedreiging: Gebruik DDoS-beveiligingsservices in de cloud en implementeer snelheidsbeperking.

Beslissingen documenteren: Leg beperkingsbeslissingen vast, waaronder:

  • Welke bedreigingen worden aangepakt.
  • Welke mitigatiebenadering is gekozen?
  • Waarom deze aanpak geschikt is.
  • Wie is verantwoordelijk voor de implementatie.
  • Eventuele restrisico's die overblijven.

5. Risicobeperking valideren

Controleer de effectiviteit: Nadat u oplossingen hebt geïmplementeerd, controleert u of deze bedreigingen effectief aanpakken:

Beveiligingstests:

  • Penetratietests om te verifiëren dat bedreigingen niet kunnen worden uitgebuit.
  • Beveiligingscodebeoordelingen om te bevestigen dat risicobeperking correct wordt geïmplementeerd.
  • Geautomatiseerde beveiligingsscans om gemiste beveiligingsproblemen te detecteren.
  • Rode teamoefeningen om verdediging te testen tegen realistische aanvalsscenario's.

Continue validatie: Bedreigingen en oplossingen ontwikkelen zich verder:

  • Nieuwe bedreigingen ontstaan als technologie verandert.
  • Bestaande oplossingen kunnen ineffectief worden.
  • Toepassingswijzigingen kunnen nieuwe beveiligingsproblemen veroorzaken.

Bedreigingsmodellering in de ontwikkelingscyclus

Doorlopend proces: Threat modeling mag geen eenmalige activiteit zijn. Deze moet deel uitmaken van uw typische ontwikkelingslevenscyclus:

Eerste ontwerp: Voer uitgebreide threat modeling uit tijdens het eerste toepassingsontwerp om architectuurbeslissingen te beïnvloeden.

Functieontwikkeling: Voer bedreigingsmodellering uit wanneer u belangrijke nieuwe functies toevoegt die de beveiligingsgrenzen wijzigen of nieuwe gegevensstromen introduceren.

Regelmatige updates: Controleer en werk bedreigingsmodellen periodiek bij, zelfs zonder grote wijzigingen, naarmate het bedreigingslandschap zich ontwikkelt.

Reactie op incidenten: Update bedreigingsmodellen na beveiligingsincidenten om geleerde lessen op te nemen.

Progressieve risicovermindering: Met deze iteratieve benadering kunt u uw bedreigingsmodel verfijnen en risico's geleidelijk verminderen in plaats van alle risico's tegelijk te verhelpen.

Microsoft Bedreigingsmodelleertool

Microsoft biedt een gratis hulpprogramma waarmee threat modeling toegankelijker en gestructureerder wordt:

Doel: Het Microsoft Threat Modeling Tool maakt threat modeling eenvoudiger voor alle ontwikkelaars via een standaard notatie voor het visualiseren van systeemonderdelen, gegevensstromen en beveiligingsgrenzen.

Geautomatiseerde bedreigingsidentificatie: Het hulpprogramma helpt threat modelers klassen van bedreigingen te identificeren die ze moeten overwegen op basis van de structuur van hun softwareontwerp. Tijdens het maken van uw toepassingsdiagram worden in het hulpprogramma automatisch potentiële bedreigingen voorgesteld op basis van de onderdelen en gegevensstromen die u hebt gedefinieerd.

Belangrijkste mogelijkheden: Met het Threat Modeling Tool kan elke ontwikkelaar of softwarearchitect het volgende doen:

Beveiligingsontwerp communiceren:

  • Maak visuele weergaven van systeemarchitectuur.
  • Gebruik consistente notatie die beveiligingsteams en ontwikkelaars begrijpen.
  • Documenteer beslissingen over architectuur die relevant zijn voor beveiliging.
  • Deel bedreigingsmodellen met belanghebbenden voor beoordeling en feedback.

Ontwerpen analyseren:

  • Identificeer potentiële beveiligingsproblemen met behulp van bewezen methodologieën (STRIDE).
  • Automatisch bedreigingslijsten genereren op basis van de toepassingsstructuur.
  • Prioriteit geven aan bedreigingen op basis van ernst en waarschijnlijkheid.
  • Vergelijk verschillende ontwerpalternatieven vanuit een beveiligingsperspectief.

Risicobeperking beheren:

  • Oplossingen voorstellen voor geïdentificeerde bedreigingen.
  • Bijhouden van de mitigatie-implementatiestatus.
  • Documenteer beveiligingsbeslissingen en -logica.
  • Rapporten genereren voor beveiligingsbeoordelingen en naleving.

Slag:

  • Het hulpprogramma is gratis en kan worden gedownload van Microsoft.
  • Het bevat sjablonen voor algemene toepassingstypen.
  • Ingebouwde richtlijnen helpen nieuwe gebruikers om concepten voor bedreigingsmodellering te leren.
  • Integratie met Azure DevOps maakt het mogelijk om bedreigingen te koppelen aan werkitems.

Aanvullende bronnen

Zie voor meer informatie over threat modeling: