Til Datatilsynet

Til startsiden til Datatilsynet

Veileder

Programvareutvikling med innebygd personvern

Koding

Denne aktiviteten skal gjøre utviklere i stand til å skrive sikker kode ved implementering av krav for personvern og sikkerhet.

Det er viktig at virksomheten velger en sikker og felles metodikk for både for koding og for hvordan utviklere kan oppdage og fjerne sårbarheter fra koden. Automatiske verktøy for kodeanalyse bør innføres og virksomheten må ha rutiner for statisk kodeanalyse og kodegjennomgang.

Målgruppen for denne fasen er primært utviklere, sekundært personvernombud, sikkerhetsrådgivere og testere.

Bruk godkjente verktøy og rammer

For å sikre en enhetlig praksis bør dere definere og publisere en liste over godkjente og tillatte verktøy, prosesser og rammeverk for programvareutvikling og utrulling. I tillegg må det være klart hva ulike verktøy kan brukes til. Dette innebærer å beskrive godkjente verktøy med tilhørende sikkerhetsfunksjonalitet som kan bidra til å automatisere og håndheve sikkerhetsrutiner i kodingen. Listen bør også inneholde hvilke støttekomponenter, og komponenter og utviklingsverktøy fra tredjepart, som er tillatt å bruke under utvikling. Verktøy og støttekomponenter bør risikovurderes og analyseres for sårbarheter. Listen bør samstemmes med og godkjennes av sikkerhetsrådgiver. Den må oppdateres regelmessig. Det bør være et mål å bruke siste versjon av godkjente verktøy, slik at dere kan utnytte muligheter som ny sikkerhetsfunksjonalitet gir. For eksempel kan listen inneholde godkjent krypteringsteknologi med nøkkellengde. Listen bør regelmessig oppdateres med de mest anerkjente og oppdaterte algoritmer og metoder og hvilken nøkkellengde som er tilstrekkelig.

Programvare er i dag ofte sammensatt av flere samarbeidende tjenester. Det benyttes derfor et vesentlig større antall programmeringsspråk, biblioteker og rammeverk enn tidligere. Ofte legges både kode, biblioteker og serveroppsett sammen i mer statiske kontainere. Det er derfor er viktig at det settes opp regelmessig skanning etter sårbarheter i alle deler av koden, både i underliggende biblioteker og kontaineroppsett. Eksempler på dette kan man finne på GitHub (github.com) og Docker Security Scanning (docs.docker.com).

Ugyldiggjør utrygge funksjoner og moduler

Mange funksjoner, API-er, tredjepartsbiblioteker og moduler kan være usikre å bruke ut fra dagens trusselbilde. Det bør gjøres en analyse av alle funksjoner, API-er, tredjepartsbibliotek og moduler som brukes i programvareutviklingen. De som er utrygge forbys og de som er utdaterte eller inneholder kjente sårbarheter oppdateres. Når en forbudsliste foreligger, bør koden sjekkes (også arvet kode) for å erstatte forbudte funksjoner med tryggere alternativer. Dette kan gjøres ved å bruke verktøy for kodeskanning. I tillegg bør koden sjekkes for å deaktivere unødig sporing, logging og innsamling av personopplysninger. Utrygge funksjoner og moduler kan for eksempel håndteres av bibliotek som OWASP Dependency Check (owasp.org) 

Statisk kodeanalyse og kodegjennomgang

Statisk kodeanalyse og kodegjennomgang skal gjøres regelmessig. Statisk kodeanalyse sikrer at retningslinjer for sikker koding følges. Dere bør bruke automatiske verktøy for kodeanalyse og kodegjennomgang så langt det lar seg gjøre. I tillegg bør det gjøres en manuell gjennomgang av koden, for å sikre at man fanger opp svakheter som kan føre til feil bruk eller lekkasje av personopplysninger. Det kan for eksempel være vanskelig å fange mønstre siden data alene ikke nødvendigvis er å anse som personopplysninger, men at kobling av ulike typer data kan gi personopplysninger. For å ivareta personvernet er det viktig å kartlegge hvor personopplysninger lagres. En gjennomgang av koden bør spesielt se hvor personopplysninger skrives. En vanlig svakhet er å logge personopplysninger i applikasjonslogger med mangelfull sikkerhet.

Last ned


Eksempel på en sjekkliste for kodefasen (pdf)