Trussellandskap, risikoanalyse og STRIDE.
IT-sikkerhet handler om å beskytte data, systemer og tjenester mot uønskede hendelser. I en verden der vi utvikler stadig mer komplekse applikasjoner som håndterer sensitiv informasjon, er det avgjørende å forstå hvilke trusler som finnes og hvordan vi kan beskytte oss mot dem.
Trusselmodellering er prosessen med å identifisere potensielle sikkerhetsrisikoer i et system, vurdere deres alvorlighetsgrad, og planlegge mottiltak. Som utvikler er det din oppgave å tenke sikkerhet inn i alle faser av utviklingsarbeidet.
- Script kiddies: Uerfarne angripere som bruker eksisterende verktøy uten dyp forståelse
- Hacktivist: Motivert av politiske eller ideologiske formål
- Organisert kriminalitet: Profesjonelle grupper som søker økonomisk gevinst
- Statlige aktører: Nasjonalstater med store ressurser og avanserte metoder
- Innsidere: Ansatte eller tidligere ansatte med legitim tilgang
Vanlige angrepstyper:
1. Phishing og social engineering
Lure brukere til å gi fra seg sensitiv informasjon ved å utgi seg for å være noen de stoler på.
2. Malware
Skadelig programvare som virus, ormer, ransomware og trojanske hester.
3. DDoS (Distributed Denial of Service)
Overbelaste et system med trafikk slik at legitime brukere ikke får tilgang.
4. Man-in-the-middle
Avlytte eller manipulere kommunikasjon mellom to parter.
5. Zero-day exploits
Utnytte sårbarheter som ikke er kjent for produsentene ennå.
6. Brute force
Systematisk prøve alle mulige kombinasjoner av passord eller nøkler.
OWASP (Open Web Application Security Project) er en organisasjon som arbeider for bedre sikkerhet i webapplikasjoner. De publiserer en liste over de ti mest kritiske sikkerhetstrusler, oppdatert hvert fjerde år.
OWASP Top 10 (2021-versjon):
A01: Broken Access Control
Feil i tilgangskontroll som lar brukere få tilgang til ressurser de ikke skal ha tilgang til.
Eksempel: Endre bruker-ID i URL for å se andre brukeres data
A02: Cryptographic Failures
Manglende eller svak kryptering av sensitiv data.
Eksempel: Lagre passord i klartekst
A03: Injection
Innsetting av ondsinnet kode gjennom brukerinput.
Eksempel: SQL injection, command injection
A04: Insecure Design
Grunnleggende designfeil i sikkerhet.
Eksempel: Mangel på trusselmodellering
A05: Security Misconfiguration
Feilkonfigurering av sikkerhet i system eller tjenester.
Eksempel: Standard passord, unødvendige funksjoner aktivert
A06: Vulnerable and Outdated Components
Bruk av komponenter med kjente sårbarheter.
Eksempel: Gamle biblioteker med sikkerhetshull
A07: Identification and Authentication Failures
Svakheter i autentisering og sesjonshåndtering.
Eksempel: Svake passordkrav, manglende rate limiting
A08: Software and Data Integrity Failures
Manglende verifisering av integritet i programvare og data.
Eksempel: Usikre CI/CD-pipelines
A09: Security Logging and Monitoring Failures
Mangelfull logging og overvåkning.
Eksempel: Ikke oppdage eller varsle om sikkerhetsbrudd
A10: Server-Side Request Forgery (SSRF)
Tvinge server til å gjøre forespørsler til uventede destinasjoner.
Eksempel: Få server til å aksessere interne systemer
Risiko = Sannsynlighet × Konsekvens
Sannsynlighet:
- Lav: Sjelden eller lite sannsynlig
- Middels: Kan skje av og til
- Høy: Forventes å skje
Konsekvens:
- Lav: Minimal påvirkning
- Middels: Merkbar påvirkning
- Høy: Alvorlig påvirkning (økonomisk tap, omdømmetap, personskade)
STRIDE-modellen er en metode for trusselmodellering:
- Spoofing (forfalskning av identitet)
- Tampering (manipulering av data)
- Repudiation (benektelse av handlinger)
- Information disclosure (avsløring av informasjon)
- Denial of service (tjenestenektangrep)
- Elevation of privilege (uautorisert tilgang)
Prosess for trusselmodellering:
1. Identifiser verdifulle ressurser: Hva skal beskyttes?
2. Lag dataflytdiagram: Hvordan beveger data seg i systemet?
3. Identifiser trusler: Bruk STRIDE eller andre rammeverk
4. Vurder risiko: Prioriter trusler basert på risiko
5. Planlegg mottiltak: Hvordan redusere eller eliminere risiko?
6. Verifiser: Test at mottiltakene fungerer
La oss gjøre en enkel trusselmodellering av et innloggingssystem:
1. Verdifulle ressurser:
- Brukerkontoer
- Brukerdata (personnummer, adresse, betalingsinfo)
- Sesjonstokens
2. Dataflyt:
Bruker → Nettleser → Webserver → Database
3. Identifiserte trusler (STRIDE):
| Trussel | Type | Sannsynlighet | Konsekvens | Risiko |
|---|---|---|---|---|
| Phishing | Spoofing | Middels | Høy | Høy |
| SQL injection | Tampering | Høy | Høy | Kritisk |
| Svakt passord | Elevation | Høy | Høy | Kritisk |
| Sesjonshijacking | Information disclosure | Middels | Høy | Høy |
| Brute force | Spoofing | Høy | Middels | Høy |
4. Mottiltak:
- SQL injection: Bruk parameteriserte spørringer
- Svakt passord: Krav til passordstyrke, 2-faktor autentisering
- Brute force: Rate limiting, CAPTCHA etter flere feil forsøk
- Sesjonshijacking: HTTPS, secure cookies, kort sesjonlevetid
- Phishing: Brukeropplæring, autentiseringsmerke i e-post
Oppsummering
I dette kapittelet har du lært:
- IT-sikkerhet: beskytte systemer og data.
- Trusselmodellering: kartlegge mulige angrep systematisk.
- Angrepsflater: identifisere svake punkter.
- Eksempel: trusselmodellering av et innloggingssystem.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| Trusselmodellering | Systematisk kartlegging av mulige angrep |
| Angrepsflate | Punkter der et system kan angripes |
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.