Avhengigheter i programvare

Åpen kildekode utgjør i dag en stor del av all kode brukt både profesjonelt og privat. Hovedtankene bak åpen kildekode er at åpent tilgjengelig kode vil kunne gagne flest mulig, og potensielt utvikle seg bedre og raskere enn om man hadde drevet utvikling i et lukket miljø. I populære prosjekt som Linux fungerer det veldig bra, og er en av grunnene til at det er brukt så mye i dag. Men i mindre prosjekter som ikke har like mange bidragsytere går man glipp av mange av fordelene som man i teorien skal få av åpen kildekode, og man kan ende opp med en situasjon som vist i figuren til høyre. I øyeblikket det oppdages en sårbarhet i det lille prosjektet, vil ansvaret for å minske trusselen til programmet falle på den som bruker programmet. Se heartbleed for et eksempel!

En ingrediensliste for programvare

The Linux Foundation gjorde i 2021 en undersøkelse som blant annet viste at 98% av deltakerne hørte til organisasjoner som på en eller annen måte benyttet Open Source komponenter i sine produkter. Selv om det har klare fordeler, er det å bygge programvare med Open Source verktøy eller bibliotek i grunn noe som åpner for sårbarheter som kan være vanskelige å holde oversikt over.

OWASP Top 10 2021

OWASP Top 10 har siden 2003 representert de viktigste/vanligste sårbarhetene eller angrepstypene mot internettbasert programvare. Listen har vært oppdatert med ujevne mellomrom, men i det siste stort sett hvert fjerde år. Listen er viktig ikke bare fordi den forteller oss hvilke angrepstyper som er vanligst for tiden, men også fordi den representerer angrep som utgjør utgangspunktet for mer eller mindre uerfarne angripere – dette er det de kommer til å prøve først, så sørg for at du ikke er sårbar for det! OWASP Top 10 tar utgangspunkt i Mitres Common Weakness Enumeration (CWE).

Sikkerhetsoperasjoner

Det å passe på sikkerheten til et system etter at det har vært satt i drift, har tradisjonelt vært sett på som en (ja, nettopp) driftsoppgave som “de på IT” tar seg av.

Et vellykket programvaresikkerhetsinitiativ må imidlertid også omfatte sikkerhetsoperasjoner eller nettverkssikkerhet, for å sørge for full tilbakekopling til utviklerne.

Sju (pluss/minus to) steg til bedre program-varesikkerhet

Programvaresikkerhet handler om sikker funksjonalitet snarere enn sikkerhetsfunksjonalitet, dvs. å lage programvare slik at den oppfører seg som forventet også når den utsettes for angrep. Det finnes en lang rekke anbefalte aktiviteter som kan bidra til å nærme seg dette målet, men hvor skal man begynne? Etter fem års forskning på dette temaet har vi et forslag til ni steg som kan representere en slik begynnelse.

Penetrasjonstesting

Ifølge Gary McGraw hviler programvaresikkerhet på tre pilarer:

  1. Anvendt risikostyring: Ta på deg den svarte hatten din for å avdekke alle mulige trusler. Utfør risikoanalyse på arkitekturnivå, dvs. trusselmodellering med mere. Risiko må spores og motvirkes kontinuerlig gjennom hele utviklingslivssyklusen.
  2. Trykkpunkter for programvaresikkerhet: Identifiser kjerneaktiviteter som bidrar til forbedret programvaresikkerhet, og sørg for at sikkerhet blir tatt hensyn til i hvert steg av programvareutviklingssyklusen. Microsoft sitt Tiltrodde databehandlingsinitiativ (Trustworthy Computing Initiative) fra 2002 er et eksempel, som resulterte i Microsoft SDL (og senere SDL Agile).
  3. Kunnskap og god praksis: Alle utviklere må ha et minimum av sikkerhetskunnskap, og kunne bruke sjekklister som OWASP Top 10.

Smidig utvikling og programvaresikkerhet

Smidighetsbevegelsen representerer alternativer til tradisjonell prosjektledelse i utviklingsprosjekter. Smidige metoder brukes typisk for å la utviklingsorganisasjoner respondere på usikkerhet og uventet hendelsesforløp. Scrum er den mest populære måten å introdusere smidighet, på grunn av sin enkelhet og fleksibilitet.

Innebygget sikkerhet

I en artikkel i IEEE S&P for mange år siden diskuterte Bruce Schneier hva som gjør at vi “kjøper” sikkerhet. Hvorfor får sikkerhetsoppgaver alltid lavere prioritet enn andre oppgaver? Hvorfor er utviklere generelt så lite interesserte i sikkerhet? Eksperter forteller stadig vekk utviklere at de må tenke er på sikkerhet, så hvorfor gjør ikke alle det? Hvorfor innser ikke ledere at de må sørge for å ha sikkerhetseksperter i utviklingsgruppen, på samme måte som de gjør med testere?

Risiko og programvaresikkerhet

Risiko er noe vi må leve med, men dessverre er det også noe de fleste av oss er veldig dårlige til å vurdere. En vanlig måte å beregne risiko på er å multiplisere konsekvensen av en hendelse med sannsynligheten for at den sal oppstå. Man illustrerer dette gjerne i en risikomatrise, der sannsynlighet er en akse, og konsekvens er den andre. I World Economic Forums risikorapport for 2019 finner vi cyberangrep langt opp til høyre i matrisen, kun slått av klimaendringer, ekstremvær og naturkatastrofer (som for meg egentlig høres ut til å være det samme).

Den som tror han er ferdig utlært er ikke utlært, men ferdig

I høst underviser jeg et nytt fag med den fengende tittelen “DAT250 Informasjons- og programvaresikkerhet” ved Universitetet i Stavanger. Som i fjor vil jeg lage norske sammendrag av utalgte forelesninger og legge ut her. Faget baserer seg delvis på bøkene…

Temamøte om ikke-funksjonelle krav

Sammen med kolleger fra SINTEF arrangerte vi 26/9 et temamøte med det klingende navnet “Ikke-funksjonelle krav i smidige prosjekter” hos KnowIt i Oslo. Møtet hadde deltakere fra bedrifter som deltar i forskjellige forskningsprosjekter med SINTEF Digital i Trondheim, og fokuset var på sikkerhet (security), trygghet (safety) og skalerbarhet (scalability).