universitetet i oslo - in2000 software engineering og ......2020/02/18  · tradisjonell fossefall...

20
IN2000 Software Engineering og prosjektarbeid Vår 2020 Sikker systemutvikling Audun Jøsang Universitetet i Oslo

Upload: others

Post on 22-Sep-2020

23 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

IN2000

Software Engineering og prosjektarbeid

Vår 2020

Sikker systemutvikling

Audun Jøsang

Universitetet i Oslo

Page 2: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Oversikt

• Bakgrunn for sikkerhet i IT-utdanningen

• Sikker smidig programvareutvikling

• Trusselmodellering i programvareutvikling

• Trusselpoker

IN2000 2020 Sikker systemutvikling 2

Page 3: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Obligatorisk informasjonssikkerhet i IT-utdanningen

• Stortinget har vedtatt at alle IT-studieprogrammer ved

universiteter og høyskoler må ha obligatoriske kurs I

informasjonssikkerhet• Source: https://www.tekna.no/aktuelt/tekna-gjennomslag-om-ikt-sikkerhet-i-utdanningen/

IN2000 2020 Sikker systemutvikling 3

11. april 2018

Page 4: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

IN2000 2020 Sikker systemutvikling 4

15.08.2014

Audun Jøsang

Page 5: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

IN2000 2020 Sikker systemutvikling 5

Page 6: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Sikker systemutvikling

- en del av innebygd informasjonssikkerhet

IN2000 2020 Sikker systemutvikling 6

Sikker

systemutvikling

Page 7: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Tradisjonell fossefall og overgang til

smidig utvikling og DevOps

IN2000 2020 Sikker systemutvikling 7

Test/Verifisering

Drift

Design

Krav

Implementering

Waterfall SDLC (Software

Development Life Cycle)

Page 8: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Smidig programvareutvikling

• Systemkrav spesifiseres som brukerhistorier

• Hver brukerhistorie implementeres i en sprint

• Fortsetter så lenge det er igjen brukerhistorier

• Systemet er ferdig når alle brukerhistorier er laget

IN2000 2020 Sikker systemutvikling 8

Evaluering av

nåværende system

Utgivelse av ny

programvareversjon

Kode, integrere og

teste ny funskjonalitet

Planlegg koding av ny

funksjonalitet

Splitt brukerhistorien

opp i enkeltfunksjonerVelg brukerhistorie for

neste programversjon

Produksjonssetting

av ferdig system

Planlegging av nytt

system Sprintsyklus

Page 9: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Sikker smidig programvareutvikling

• Sikker smidig programvareutvikling har tilleggsaktiviteter

– … ved oppstart av prosjektet

– … i hver sprintsyklus

– … ved avsluttende evaluering av system

• «Sikker smidig» blir nødvendigvis litt mindre smidig

IN2000 2020 Sikker systemutvikling 9

Evaluering av

system & sikkerhet

Utgivelse av ny

programversjon

Kode, integrere &

teste ny funksjon.

Planlegg koding

av nye funksjoner

Splitt brukerhistorie

i enkeltfunksjoner

Velg brukerhistorie

for neste versjon

Innhent generelle

sikkerhetskrav

Identifiser trusler

som må forhindres

Planlegging

Produksjonssetting

Aktiviteter for sikkerhet

Page 10: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Funksjonell og ikke-funksjonell sikkerhet

• Funksjonell sikkerhet:

– Sikkerhetskrav som utgjør en

egen brukerhistorie

– Sikkerhetsfunksjon som er

nødvendig for brukerhistorien

– Sikkerhetsfunksjon som gir en

«synlig» tjeneste til brukere

– F.eks.: Brukerautentisering

• Ikke-funksjonell sikkerhet:

– Sikkerhetskrav som ikke er en

egen brukerhistorie

– Sikkerhetsfunksjon som er

unødvendig for brukerhistorien

men nødvendig for å hindre trusler

– Sikkerhetsfunksjon som er

«usynlig» for brukeren

– F.eks.: Inputvalidering mot

SQL-injection og XSS

IN2000 2020 Sikker systemutvikling 10

Page 11: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Brukerhistorie og “Use Case”

Brukerhistorie – Sett fra brukerperspektiv:

Som [bruker] ønsker jeg [funksjon] for å nå [resultat].

Eksempel: Som Flickr-bruker, ønsker jeg å kunne

definere tilgangskontroll, slik at jeg kan velge hvem

som kan se de forskjellige bildene jeg har lagt ut.

Use Case – Sett fra designerens perspektiv:

Beskrivelse av et sett med interaksjoner mellom et

system og én eller flere aktører (der en "aktør" kan

være en bruker eller et annet system).

IN2000 2020 Sikker systemutvikling11

Bruker-

historie

Use CaseServer logic

Page 12: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Angriperhistorie og “Misuse Case”

(Angripers målsetting og Trusselscenario)

Angriperhistorie – Angripers målsetting:

Som [angriper] ønsker jeg [funksjon] for å nå [resultat].

Eksempel: Som angriper ønsker jeg å hacke Flickr-

kontoer for å stjele private bilder og personlig info.

Misuse Case (Trusselscenario)

Sett fra trusselaktøren sitt perspektiv:

Beskrivelse av et sett med

trinn og interaksjoner som

må utføres av angriperen

for å oppnå mål.

IN2000 2020 Sikker systemutvikling12

Server logic

Misuse

Case

Angriper

-historie

Page 13: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Trusselmodellering

• Systemeiere må prøve å blokkere alle relevante trusler ved å

fjerne sårbarheter som trusselen utnytter

• Angripere trenger bare å finne ett gjennomførbart scenario

• Nye trusler/sårbarheter oppdages kontinuerlig

• Utfordrende å forsvare seg mot rask trusselinnovasjon

IN2000 2020 Sikker systemutvikling 13

Front-end

Web server

Back-end

app. logic

MySQL

databaseInternet

KlientplatformBruker

Trusselaktør med målsettinger for angrep

Trusselscenarier

Page 14: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

STRIDE Trusselmodellering for programvareutvikl.

S

T

R

I

D

Tampering (kompromittering)

Repudiation (benekting)

Information disclosure (datatyveri og -lekkasje)

Denial of service (tjenestenekt)

Kan en angriper få tilgang til ved å misbruke en annens identitet?

Kan en angriper endre data som prosesseres av systemet?

Kan en angriper benekter misbruk, uten at vi kan bevise misbruket ?

Kan en angriper få tilgang til konfidensielle og personlige data?

Kan en angriper sabotere eller redusere tilgjengeligheten av systemet?

EElevation of privilege (utvidet tilgang)Kan en angriper oppnå tilgangsrettigheter som privilegert bruker?

Spoofing (identitetstyveri)

IN2000 2020 Sikker systemutvikling 14

Page 15: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Trusselpoker – Threat Poker

• Gamifisering (gamification) av sikker smidig

• Bruk av vanlig kortstokk for å løse trusler under systemutvikling

IN2000 2020 Sikker systemutvikling 15

Page 16: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Trusselpoker

• Hver deltager får en hel suite– Hjerter, Spar, Ruter eller Kløver

– 1 kortstokk → 4 deltagere, 2 kortstokker → 8 deltagere osv.

• Et spill om hver trussel.– Innledende diskusjon om hver trussel/sårbarhet og dens mulige løsning

– For hver trussel/sårbarhet spilles et spill med en eller flere runder

– I hver runde spilles 1 oddetallskort for risiko og 1 partallskort for løsning

– Kortene legges først med ansikt ned, og vendes opp samtidig

– Store sprik i tallverdi trigger diskusjon om risiko/løsning, og ny runde.

– Spillet avsluttes ved enighet om risiko, løsning og estimert tidsbruk.

• Risikovurdering: Oddetallskort (3, 5, 7, 9, J, K, A) → Risiko

– Estimere både sikkerhetsrisiko og personvernrisiko relatert til trusselen

• Løsningsvurdering: Partallskort (2, 4, 6, 8, 10, Q) → Tidsbruk

– Estimere tid det tar å fjerne relevante sårbarheter slik at

trusselscenariet elimineres, dvs. slik at sårbarheten er fjerne og en

angriper ikke lenger kan gjennomføre trusselen.

IN2000 2020 Sikker systemutvikling 16

Page 17: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Risikonivå for trussel (oddetallskort + ess)

IN2000 2020 Sikker systemutvikling 17

Tall Beskrivelse

3 Ubetydelig personvern- eller sikkerhetsrisiko, kan ignoreres

5 Svært lav personvern- eller sikkerhetsrisiko, bør løses hvis

det kan gjøres enkelt og raskt.

7 Lav personvern- eller sikkerhetsrisiko, bør løses hvis det

bare krever relativt lav innsats og relativt kort tid.

9 Moderat personvern- eller sikkerhetsrisiko, bør løses selv

om det krever betydelig innsats og tid.

J (11) Høy personvern- eller sikkerhetsrisiko, bør alltid løses selv

om det krever svært høy innsats i tid og ressurser.

K (13) Meget høy personvern- eller sikkerhetsrisiko med potensielt

svært alvorlige konsekvenser. Må løses uten unntak.

A (14) Ekstrem personvern- og/eller sikkerhetsrisiko. Med mindre

tilfredsstillende løsning kan implementeres børdet stilles

spørsmål om det er forsvarlig at denne brukerhistorien eller

funksjonen implementeres i det hele tatt.

Page 18: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Forventet tidsbruk for løsning, dvs. å stoppe trusselen

ved å fjerne sårbarhet(er) (partallskort)

IN2000 2020 Sikker systemutvikling 18

Tall Beskrivelse

2 Ubetydelig innsats, er løst eller kan løses raskt og enkelt.

4 Svært liten innsats, svært lett å løse.

6 Lav innsats, relativt lett å løse.

8 Moderat innsats, vil kreve god del arbeid. (Vurder å utsette til

en annen sprint)

10 Høy innsats, vil ta det meste av tiden for det meste av

teamet under nåværende sprint. (Vurder å utsette til en

annen sprint)

Q (12) Meget høy innsats, vil kreve så mye arbeid at

nåværendesprint må forlenges, eller utsettes til annen sprint.

Page 19: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Eksperiment med trusselpoker

IN2000 2020 Sikker systemutvikling 19

• Trusselpoker er utviklet på IFI som del av et Masterprosjekt

• Inspirert av Protection Poker, utviklet av University of North Carolina

• Utprøvd i klasse for smidig systemutvikling (IN2000) vår 2018

• Publikasjon:

Hanne Rygge and Audun Jøsang.

Threat Poker: Solving Security and Privacy Threats in Agile Software Development

NordSec 2018, Oslo, November 2018.

Page 20: Universitetet i Oslo - IN2000 Software Engineering og ......2020/02/18  · Tradisjonell fossefall og overgang til smidig utvikling og DevOps IN2000 2020 Sikker systemutvikling 7 Test/Verifisering

Slutt på forelesning

IN2000 2020 Sikker systemutvikling 20