Hopp til hovedinnhold

Trusselmodellering

Trusselmodellering er prosessen med å systematisk identifisere, forstå og finne tiltak mot sikkerhetstrusler i systemene vi utvikler. Ordet trusselmodellering kan virke teoretisk og avskrekkende, men trusselmodellering er noe vi alle gjør i vårt daglige liv - hver gang du skal krysse veien og ser deg for etter biler gjør du en liten kort trusselmodellering!

I denne artikkelen har vi prøvd å summere opp erfaringer og tips med trusselmodellering slik at det skal bli lettere å forstå følgende:

  • hvorfor trusselmodellering er nyttig
  • hvordan man kan gjennomføre trusselmodellering
  • hva man kan forvente å få ut av en trusselmodelleringssesjon (puh!) 💪
trusselmodelleringens fire spørsmål
  • Hva er det vi jobber med?
  • Hva kan gå galt?
  • Hva skal vi gjøre med det?
  • Gjorde vi en god nok jobb?

"Hva er det vi jobber med" kan være et helt system, en applikasjon eller en liten feature. Trusselmodellering kan brukes med fordel i alle tilfeller.

Hvordan gjennomfører man en trusselmodellering?

Det er mange teknikker og modeller for å gjennomføre trusselmodellering, det som presenteres her er den subjektivt beste. Diskusjon rundt trusselmodellerng tas i #security-champion

1. Hva vi jobber med?

Den første oppgaven er å beskrive det som skal trusselmodelleres på en hensiktsmessig måte slik at alle som deltar har en konkret forståelse av hva som er relevant og hva som er irrelevant i denne konteksten. Et godt utgangspunkt er en enkel tegning av systemet/applikasjonen/featuren i stilen av Data Flow Diagram.

Data Flow Diagram

caution

Ikke tenk så mye på å være pinlig nøyaktig! Diagrammet skal ikke være dokumentasjon, det skal være et verktøy for å hjelpe til å oppdage sikkerhetsproblemer.

  1. Tegn ressursene som er i spill

    I dette tilfellet så er systemet en visningsløsning for brukere. Vi starter enkelt og tar i begynnelsen bare med det vi mener er de viktigste prosessene, personene og data.

    Visning-appBrowserIDportenAktive sakerBrukerArkiv
  2. Legg på dataflyten mellom elementene

Visning-appBrowserIDportenAktive sakerBrukerArkiv

2. Hva kan gå galt?

Systematisk gjennomgang av komponentene med mål om å finne sårbarheter.

Huskeordet STRIDE oppsummerer viktige trusler:

  • Spoofing - aktør utgir seg for å være en annen for å få uautorisert tilgang
  • Tampering - aktør forsøker å endre på data, f.eks. gjennom SQL-injeksjon
  • Repudiation - aktør benekter at man har utført en handling, som at man har mottatt noe, eller godtatt noe
  • Information disclosure - aktør kan lese data de ikke skal ha tilgang til å lese, gjennom f.eks. man-in-the-middle (MITM) eller SQL-injeksjon
  • Denial of service - aktør forsøker å gjøre systemet utilgjengelig for brukerne
  • Elevation of privilege - aktør forsøker å skaffe seg mer tilgang enn man skal ha

3. Hva skal vi gjøre med det?

4. Gjorde vi en god nok jobb?

data flow diagram

Gode ressurser

  • Threat Modeling: Designing for Security (Boken til Adam Shostack som utviklet trusselmodellering praksisen hos Microsoft) Oreilly

  • Software Security: Building Security In (Boken til Gary McGraw, beskriver et "software security" rammeverk som også inkluderer threat modeling) Oreilly

  • The Treat Modeling Manifesto (En kollektivt oppsummering av trusselmodellering skrevet i sammarbeid av flere "tanke ledere" innen trusselmodellering) link

  • Eksempler på rammeverk for trusselmodellering er PASTA.

Verktøy som kan være nyttige:

Savner du noe?

Legg det inn selv på GitHub, si ifra i #security-champion, eller kontakt redaksjonen. Takk! 💖