Sju steg til bedre programvaresikkerhet
KOMMENTAR: Programvaresikkerhet handler om å lage programvare slik at den oppfører seg som forventet også når den utsettes for angrep. Hvordan sikre nettopp det?
Mange anbefalte aktiviteter finnes på dette feltet. Men hvor skal du begynne? Etter fem års forskning på temaet har vi et forslag til sju steg som kan være en slik start.
1. Definer hva som er "god nok" sikkerhet for deg
Er du heldig, har du allerede noen eksplisitte krav som reflekterer et sikkerhetsbehov. Sørg for å dekke alle regulatoriske krav. Om du behandler personopplysninger, må du forholde deg til GDPR som stiller krav til innebygget sikkerhet.
Trolig har også dine kunder krav til sikkerhet – men de er ikke alltid klar over dem på forhånd! Lag derfor gjerne et eget møte i begynnelsen av et utviklingsprosjekt, der dere konkretiserer forutsetninger og intensjoner for sikkerhet. Møtet kan gjentas med faste mellomrom for prosjekter som går over tid.
2. Studer og vurder dine eksisterende sikkerhetsaktiviteter på programvarefronten
De aller fleste virksomheter har allerede en god del slike aktiviteter, uten at de nødvendigvis har satt dem i system. Ved hjelp av BSIMM eller OWASP SAMM kan du gjøre en selvevaluering og sammenlikne deg med andre programvarevirksomheter.
3. Sørg for at sikkerhetsaktiviteter eksplisitt legges til i utviklingsprosessen
Dersom du ikke gjør sikkerhetsaktivitetene eksplisitte, har de lett for å bli nedprioritert eller glemt – spesielt når du driver med smidig utvikling. Ett alternativ er å se på Microsofts SDL Agile. Der er sikkerhetsaktivitetene inndelt i tre grupper: 1) Gjøres en gang per prosjekt, 2) Gjøres en gang per sprint, og 3) Et utvalg av aktivitetene gjøres i hver sprint.
Det viktigste er at du finner fram til en metodikk som passer for din virksomhet!
4. Tenk nytt rundt roller og ansvar for sikkerhet
Sikkerhet bør være hver utviklers ansvar. Det er lite trolig at programvaresikkerheten vil bli bedre av å ansette en sikkerhetsekspert som forteller utviklerne hvor dumme de er.
Vi tror det er bedre at hver utviklergruppe har en sikkerhetsforkjemper. Ikke nødvendigvis en som er sikkerhetsekspert i utgangspunktet. Men hun/han bør være over gjennomsnittet interessert i sikkerhet. En som kan prioriteres for kursing i programvaresikkerhet.
Vedkommende kan bidra til tekniske aktiviteter for sikkerhet, trusselmodellering, og prioritering av sikkerhetsaktiviteter, samt hjelpe til med innføring av sikkerhetsstrategi for produktet. Dette kan bidra til at utviklerne blir selvforsynt med sikkerhet.
Du kan bygge videre på konseptet via samarbeid med andre grupper. Dette kan på sikt bli et "sikkerhetslaug" som deler på kompetanse og erfaringer.
5. Lag ditt eget opplæringsprogram
Du må sørge for at utviklerne har grunnleggende ferdigheter innen programvaresikkerhet. I dag kan du ikke forutsette at de har fått dette gjennom utdanningen.
Ulike typer opplæring finnes, fra den tradisjonelle varianten som er instruktørledet, til veiledning og mentoring. Sistnevnte er spesielt gunstig å kombinere med sikkerhetsforkjempere. Større arrangement kan kjøres en eller flere ganger årlig, med simuleringer og rollespill etterfulgt av gruppediskusjoner.
6. Finn måter som lar utviklerne begynne å tenke som en angriper
Hvis utviklerne lærer seg å se applikasjonen fra en angripers synsvinkel, kan de lettere oppdage potensielle sårbarheter og sikkerhetsfeil i designet. Trusselmodellering er en strukturert måte å tilnærme seg dette på. Å skissere opp et dataflytdiagram for (deler av) applikasjonen, og så bruke sjekklister av angrepstyper slik som STRIDE, kan de fleste gjøre – med minimalt av opplæring. Spesielt nyttig er det å ha med en sikkerhetsekspert de første gangene.
7. Introduser sikkerhetsverktøy i arbeidsflyten
Finn gode verktøy tilpasset din egen utviklingsmetodikk, og lær deg å bruke dem. Alle burde bruke verktøy for statisk analyse og få disse konfigurert slik at de kan se etter sikkerhetsproblemer. Automatiser så mye som mulig.
Det er ikke mulig å oppnå 100 prosent sikkerhet. Men de sju stegene vil sette deg i stand til å plukke den lavthengende frukten som kan bety at programvaren du lager er litt sikrere enn produktene til konkurrentene dine.
Daniela Soares Cruzes, seniorforsker SINTEF Digital, Trondheim
Martin Gilje Jaatun, seniorforsker SINTEF Digital, Trondheim
Inger Anne Tøndel, forsker SINTEF Digital, Trondheim
Karin Bernsmed, seniorforsker SINTEF Digital, Trondheim