Hva er trusselmodellering? Hva mener vi med angrepsflate? Hvor kommer tillit inn i bildet? Og hva har et bilde fra en utenlandsk fotgjengerovergang med saken å gjøre? Fortvil ei, svarene følger!
Trusselmodellering er en prosess som går gjennom sikkerheten til et system, identifiserer problemområder, og evaluerer risikoen assosiert med hvert område.
Det er et par begreper som er lurt å definere først: En tillitsgrense (trust boundary) er et hvilket som helst sted i systemet ditt hvor tillitsnivået til dataene endrer seg, f.eks. bak en brannmur. Angrepsflaten (attack surface) er alle steder der en angriper kan komme seg inn i systemet. I denne sammenhengen må vi spørre oss selv: Hvordan er veier inn og ut av systemet beskyttet? Hvordan er datakanaler beskyttet? Hvordan forhindrer, detekterer eller reagerer kontrollmekanismer på data man ikke stoler på?
En trusselmodell er en visuell representasjon av av fire hovedelementer:
- Aktiva (assets) i systemet;
- angrepsflaten;
- en beskrivelse av hvordan komponenter og aktiva interagerer;
- trusselaktører som kunne tenkes å angripe systemet, og hvordan angrepet kunne materialisere seg.
Kongstanken bak trusselmodellering er å tenke som en angriper.
STRIDE
Det finnes så mye trist og leit i verden, og det er vanskelig, selv for garvede sikkerhetsfolk, å huske på alle mulige ting som kan skje. Microsoft laget i sin tid en huskeliste for angrepstyper som de kalte STRIDE, etter forbokstavene til de forskjellige angrepstypene:
- Spoofing – en angriper gir seg ut for å være en annen bruker, komponent eller system
- Tampering – en angriper modifiserer data
- Repudiation – en angriper (eller annen aktør) kan nekte å ha utført en handling eller sendt en melding hvis systemet ikke har tilstrekkelige mekanismer eller bevismateriale
- Information disclosure – en angriper kan få leseaksess til beskyttede data
- Denial of Service (DoS) – en angriper kan hindre legitime brukere i å bruke den vanlige funksjonaliteten til systemet
- Elevation of privilege – en angriper bruker ulovlige midler for å nå et tilgangsnivå med andre privilegier enn han har i øyeblikket
(Bildet av fotgjengerovergangen var forøvrig det nærmeste Flickr kom til en illustrasjon av STRIDE…)
OWASP top 10
Open Web Application Security Project (OWASP) har laget en liste over de ti vanligste/viktigste sårbarhetene i web-baserte systemer, sist oppdatert i 2017:
- A1:2017-Injection (Injisjering)
- A2:2017-Broken Authentication (Dårlig autentisering)
- A3:2017-Sensitive Data Exposure (Eksponering av sensitive data)
- A4:2017-XML External Entities (XXE) (XML eksterne entiteter)
- A5:2017-Broken Access Control (Dårlig aksesskontroll)
- A6:2017-Security Misconfiguration (Feilkonfigurert sikkerhet)
- A7:2017-Cross-Site Scripting (XSS)
- A8:2017-Insecure Deserialization (Usikker deserialisering)
- A9:2017-Using Components with Known Vulnerabilities (Bruk av komponenter med kjente sårbarheter)
- A10:2017-Insufficient Logging&Monitoring (Utilstrekkelig logging og overvåkning)
Mange av disse passer inn i STRIDE direkte, f.eks. S: A2, T: A1, R: A10; I: A3, E: A5, mens andre kan være relevante for flere (eller kommer helt i tillegg til STRIDE). Dette bekrefter også at vi ikke må falle for fristelsen å tenke på STRIDE som en taksonomi – det er et rammeverk som representerer et godt utgangspunkt, ikke det endelige svaret som dekker alle eventualiteter.
Dataflytdiagram
For å få en oversikt over systemet som skal analyseres, anbefaler vi å lage et dataflytdiagram som illustrerer de viktigste aktørene, prosessene og datalagrene, og hvordan data flyter mellom dem. Et eksempel på et enkelt dataflytdiagram er vist under.
Dataflytdiagrammet er velegnet som bakteppe når man skal gå gjennom alle mulige angrep i henhold til STRIDE.
Angrepstre
For å jobbe videre med hvert identifiserte angrep, og grave dypere med hensyn til angripernes mål og strategier, kan man lage angrepstre for hvert angrep (se eksempel til høyre). På denne måten kan man detaljere alle komponenter som er nødvendige for å lykkes med angrepet, og også eventuelle alternativer som er tilgjengelige for angriperen. Dette vil også være et godt grunnlag for å identifisere mulige sikkerhetstester og eventuelle mottiltak.
Oppsummering
Trusselmodellering er en måte å få oversikt over mulige angrep mot dine systemer og/eller brukere. Fordelene med trusselmodellering inkluderer tidlig håndtering av sikkerhetsproblemer, bedre sikkerhetsvurderinger og mer effektiv sikkerhetstesting. Du vil alltid ha begrensede ressurser tilgjengelig for sikkerhet, så trusselmodellering vil gjøre deg i stand til å fokusere på de mest kritiske områdene først. I tillegg så vil involvering av medarbeiderne i trusselmodellering ha en viktig sikkerhetsbevissthetseffekt, potensielt i den grad at folk blir entusiastiske rundt sikkerhet.
Det finnes ikke en “korrekt” måte å gjøre trusselmodellering på, velg fritt mellom angrepstre, dataflytdiagrammer og STRIDE, og mye mer. “Smidig” er ingen unnskyldning for ikke å gjøre trusselmodellering!
Illustrasjon ved Flickr-bruker R/DV/RS https://www.flickr.com/photos/redvers/2452253567 CC BY 2.0
Dataflytdiagram-eksempelet er hentet fra
https://www.owasp.org/index.php/Application_Threat_Modeling