Skip to main content

Trusselmodellering

Dette er en kort introduksjon til trusselmodellering, dataflytdiagrammer, STRIDE og angrepstrær.

Du har nok allerede gjort en enkel trusselmodellering uten at du selv er klar over det. Har du for eksempel tenkt på hvorfor brukerne av systemet du lager må logge seg inn med brukernavn og passord?

Når disse valgene ble tatt så har du automatisk gjort en enkel trusselmodellering. Du ønsker jo selvfølgelig ikke at uvedkommende skal kunne få tilgang til data i systemet ditt og du ønsker ikke at hvem som helst skal se data som overføres mellom brukerne dine og nettstedet ditt.

Hele poenget med trusselmodellering er å tenke som en angriper.

Identifisere trusler

Det finnes flere måter å identifisere trusler mot et system. Den enkleste metoden som ikke krever så mye, er å samle utviklingsteamet til en sosial kveld eller workshop, og prøve å tenke på hvordan man kan angripe systemet. Da vil man antagelig komme opp med mange potensielle trusler. Noen er sikkert allerede adressert, mens andre kanskje må testes ut og eventuelt graves dypere i. Når man har adressert alle trusselene og verifisert at mottiltak er implementert, så gjentar man prosessen. For å få et overblikk over prosessen er det ofte lur å tegne en oversikt (diagram) av systemet.

Prosessen starter ofte med å tegne opp et diagram/oversikt av systemet, så identifisere trusler, adressere truslene, og til slutt validere at mottiltak er implementert, så gjenta.

Dersom man ønsker å benytte mer formaliserte verktøy og prosesser så finnes det to mye brukte metoder for trusselmodellering, angrepstre og datafylytdiagrammer + STRIDE.

Angrepstre

Bruk av angrepstrær er en fin måte å identifisere trusler på dersom man er god til å tenke som en angriper. Dersom dette ikke faller naturlig er bruk av dataflydiagrammer ofte en bedre metode.

Et angrepstre består av et hovedmål på toppen av treet, og med ulike måter å nå hovedmålet som noder.

I dette eksempelet er hovedmålet til en angriper å få tilgang til rapporter i et timeføringssystem. For å nå hovedmålet kan angriperen enten benytte et gyldig passord i systemet eller finne en svakhet i løsningen som gir tilgang. En måte å få tak i et gyldig passord er å bestikke en ansatt. Slik fyller man på med ulike måter for å nå hovedmålet og delmålene. Man går deretter gjennom de identifiserte truslene og verifisere at man har mottiltak på plass eller eventuelt velger å godta at det finnes trusler mot systemet som man ikke vil beskytte seg mot. Kostnaden på mottiltakene bør alltid veies opp mot verdiene som skal beskyttes.

Mer informasjon og flere eksempler på angrepstrær finnes i artikkelen Attack Trees av Bruce Schneier.

Dataflytdiagram + STRIDE

Man starter med å lage et detaljert dataflytdiagram over systemet eller en del av systemet man skal trusselmodellering av.

Når man har tegnet opp dataflyten og tillitsgrensene til systemet, så bruker man STRIDE for å identifisere trusler. STRIDE er et akronym for

  • Spoofing - Kan man stole på at brukeren er man tror?
  • Tampering - Kan noen endre på data med vilje eller uforvarende?
  • Repudiation - Kan det bevises hvem som gjorde en gitt handling i systemet?
  • Information disclosure - Kan data stjeles eller komme på avveie?
  • Denial of Service - Kan noen gjøre at tjenester blir utilgjengelige?
  • Elevation of privilege - Kan noen tilegne seg utvidede rettighter i systemet?

Her er et eksempel på et dataflytdiagram som viser dataflyten ved innlogging med brukernavn og passord. Pilene mellom tjenestene representerer kall. SSL-proxy er et sikkerhetslag som krypterer informasjon mellom tjenester. HTTPS er kall der informasjonen som sendes med er kryptert, og HTTP er kall der informasjonen som sendes med ikke er kryptert.

I dataflytdiagrammet over kan man se at det er en fare for at noen med tilgang til nettverket mellom SSL-proxyen og timeføringssystemet kan lese og endre brukernavnet og passordet som ikke er kryptert over HTTP. Ved å gå gjennom alle dataflytene mens man tenker på mulige angrep i henhold til STRIDE-modellen kan man bygge opp en liste over mulige trusler mot systemet.

Når truslene er identifisert må mottiltak beskrives og man må ikke glemme å validere at mottiltaket faktisk fungerer som forventet.

Verktøy

  • Microsoft Threat Modeling Tool gir deg en kick-start ved at en del vanlige trusler for diverse tjenester allerede er beskrevet. Dette verktøyet er særlig nyttig dersom man opererer i Microsoft Azure.
  • OWASP Threat Dragon er et tilsvarende open source verktøy, som det kan være verdt å ta en titt på.
  • Draw.io med denne pakken drawio-threatmodeling er et verktøy som både på web og i de vanligste klientene

Kurs og foredrag

Kilder