Sikkerhetstesting gjennom utviklingsløpet

Like dokumenter
Innebygd personvern og personvern som standard. 27. februar 2019

IN1030 Systemer, krav og konsekvenser. Innebygd informasjonssikkerhet. Audun Jøsang Institutt for Informatikk Universitetet i Oslo 28.

Kap 11 Planlegging og dokumentasjon s 310

KINS-tech: Innebygd personvern bestemmelsen som implementerer hele forordningen.

Test i Praksis. NTNU Februar Copyright 2014 Accenture All Rights Reserved.

Løsningsforslag Sluttprøve 2015

Testdekning og automatisering - Er 100% testdekning et mål?

Modellering IT konferanse

Erfaringer med innebygd personvern i utvikling av mobilapper på UiO. Maren Magnus Jegersberg og Dagfinn Bergsager USIT/UiO

JigZaw. Teststategi utviklet av. Erik Drolshammer Bård Lind. Verifiser Forventet Funksjonalitet

Hvordan kan vi utvikle og etablere sikrere løsninger? Kasus: for mobiltelefoner og nettbrett

Sikkerhetshendelse hos Kartverket i Oppfølging på kort og lang sikt. Pål Asmund Røste Seksjonsleder IT Applikasjonsdrift- 10/04/2019

Mellom barken og veden Smidig testing i krevende terreng TTC 2015

VEDLEGG A UTKAST TIL LEVERANSEBESKRIVELSE

Cross the Tech Bridge. Anette Valaker

Sikkerhetspolicies i utviklingsprosjekter

Kravhåndtering. INF1050: Gjennomgang, uke 03

GJENNOMGANG UKESOPPGAVER 9 TESTING

Automatisert test som leveransekrav

Inf1055 Modul B 26 april 2017:

11 Planlegging og dokumentasjon

Personopplysningsforskriften kapittel 2 og 3 - ISO/IEC 27001

GJENNOMGANG UKESOPPGAVER 2 PROSESSMODELLER OG SMIDIG PROGRAMVAREUTVIKLIG

Kravspesifikasjon

Effektiv testing. Per Otto Bergum Christensen September, JavaZone. Bergum Christensen Consulting

DevOps og Lean Startup: Eksempler fra virkeligheten. Eivind Arvesen

Software Development Plan. Software Development Plan. Forum / Nettverkssamfunn Team 2

Risikovurdering for folk og ledere Normkonferansen 2018

A tool for collaborating to success in a development project Experience with Visual Studio 2010 and Test Manager at Lånekasse

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted.

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Overordnet IT beredskapsplan

System Dokumentasjon. Team2. Høgskolen i Sørøst-Norge Fakultet for teknologi, naturvitenskap og maritime fag Institutt for elektro, IT og kybernetikk

SonicWALL UTM. Hvorfor man bør oppgradere til siste generasjon SonicWALL brannmur. NSA E-Class serien. NSA serien. TZ serien

Kostnadseffektivt eller bortkastet tid? Øyvind Woll Seniorkonsulent, Vivento AS

Spørsmål og svar til Konkurransegrunnlag

Sikkerhetstesting i et «nøtteskall» DND Oslo, 8 mars 2016

Innebygd personvern personvernforordningen artikkel 25

Grunnleggende testteori

Modernisering av IKT i NAV

Erlend Oftedal. Risiko og sikkerhet i IKT-systemer, Tekna

Konfigurasjonsstyring

Gårsdagens testroller takler ikke dagens utfordringer. Magnus Halvorsen og Erik Rogstad

Minimere og begrense. Gjem og skjul. Separere.

Tekniske krav til portal med publiseringsløsning (fase 1)

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

Informasjonssikkerhet i kommunene. Gaute Wangen, seniorrådgiver Seksjon for digital sikkerhet, NTNU

Altinns nye tjenesteverksted. Lars Vegard Bachmann, produkteier portal og tjenester, Altinn

Testplan (Software Test Plan)

LEVER OFTERE TEST SMARTERE

Internkontroll i mindre virksomheter - introduksjon

Programvareutvikling med innebygd personvern nye personvernregler

Eksamen 2013 Løsningsforslag

NTNU Retningslinje for tilgangskontroll

GJENNOMGANG UKESOPPGAVER 7 REPETISJON

VI BYGGER NORGE MED IT.

1 Forord. Kravspesifikasjon

Sikkerhetsmål og -strategi

Testdata og maskering i praksis

Team2 Requirements & Design Document Værsystem

Kravspesifikasjon MetaView

Technical Integration Architecture Teknisk integrasjonsarkitektur

3.3 Case 3: Opprette en bruker Case 4: Endre en bruker... 8

Tingenes tilstand: Programvaresikkerhet i offentlig sektor

IKT-reglement for Norges musikkhøgskole

UNIVERSITETET I OSLO

altinn tjenester 3.0

Nye personvernregler og innebygd personvern

Verdien av god leverandørtesting i konstruksjonsfasen i smidige prosjekter

Hva betyr «Just-in-time» privileger for driftspersonalet?

Kommende Trender Innenfor Test

Grunnleggende testteori

Lumia med Windows Phone

Erfaring med funksjonell testing i en integrert ALM prosess

IT Service Management

Testbilag til IT kontrakter

Statisk testing. Testing uten datamaskin, men med vår egen evne til å vurdere og analysere

Testing av intern IT-sikkerhet

F-Secure Mobile Security for S60

SENTRALISERT OG SIKKER DRIFT AV WINDOWS KLIENTER OG TILKNYTTET MASKINVARE

OBC FileCloud vs. Dropbox

AP221 Use Case - TUL - Utarbeid prosessflytmal og komponenter

EN INNFØRING I BPM

UKEOPPGAVER 2: SYSTEMUTVIKLINGSPROSESSER OG PROSJEKTARBEID INNSPILL TIL SVAR

Referansearkitektur sikkerhet

Validering og verifisering. Kirsten Ribu

Samdok samla samfunnsdokumentasjon

Kompetansemål fra Kunnskapsløftet

Livsløpstesting av IT-systemer

3.1 Prosedyremal. Omfang

ISO Syscom brukerforum 2013 Jørn Erik Hornseth og Torbjørn Remmen

Egenevalueringsskjema

Forelesning 12: Applikasjonssikkerhet og GDPR

Bergeland IKT. Elev guide

Test og kvalitet To gode naboer. Børge Brynlund

IN1030 Systemer, krav og konsekvenser. Innebygd informasjonssikkerhet. Audun Jøsang Institutt for Informatikk Universitetet i Oslo 21.

Transkript:

Sikkerhetstesting gjennom utviklingsløpet

5 faser: Slik utfører du sikkerhetstesting gjennom utviklingsløpet Det har aldri vært mer snakk om sikkerhet i IT verdenen enn nå. Det er ikke så rart med tanke på alle datalekkasjene, cryptolocker og wiper malwaren som florerer på etheren om dagen. Men selv om fokus og snakk fra både fagfolk og media om sikkerhet er større enn før, så smeller det også mye mer enn tidligere. Ikke så rart kanskje, ettersom vi hele tiden digitaliserer mer og mer og produserer data hvert eneste nanosekund. I motsetning til naturlige stoffer, som vi kjemper for å bevare og utnytte mest effektivt, så bare vokser datamengdene. Mange beveger seg mot, eller er allerede i, skyen. Dette medfører nye krav og metoder for sikring av data. I fremtiden vil nok dataene alene ha en del sikkerhetskontroller innebygget, men frem til da så er vi sterkt avhengig av å legge kontrollene på applikasjonene og infrastrukturen som behandler de. Men hvordan vet vi at vi har brukt riktig kontrollere på riktig steder? Hvordan vet vi om de tiltakene vi har iverksatt er tilstrekkelige? For å kunne svare på slike spørsmål må man ha testrutiner som genererer metrikker. Sikkerhetstesting er noe man må gjøre kontinuerlig gjennom hele applikasjonens levetid; fra ide til utfasing.

Begynn med klassifisering av applikasjonene Uavhengig om du har autonome utvikler-team eller rigide sikkerhetsstrategier, så må alle applikasjoner som skal utvikles først klassifiseres. Her kan man benytte OWASP sin ASVS (Application Security Verification Standard) eller egen utviklede klassifiseringer. Spørsmål man skal stille seg er: Behandler applikasjonen sensitive data? Er applikasjonen kritisk for virksomheten eller samfunnet? I OWASP ASVS har man i hovedsak 3 applikasjonskategorier: Level 1: Retningslinjer for alle applikasjoner Level 2: Retningslinjer for applikasjoner som behandler sensitive data som krever beskyttelse Level 3: Retningslinjer for applikasjoner ansett som virksomhets- eller samfunnskritiske Hvert enkelt nivå har et sett med må krav og bør krav vedrørende sikkerhetskontroller som skal implementeres. Slike retningslinjer skaper forutsigbarhet for både produkteiere og utviklere. Det kan være tilfeller hvor det er usikkerhet rundt hva som klassifiseres som sensitivt. Mye er det lett å finne svar på ved å besøke Datatilsynets informasjonssider (GDPR krav vedrørende personsensitiv informasjon) eller lovkrav i Sikkerhetsloven, Personvernloven, Statistikkloven, Arkivloven, etc. Ved usikkerhet spør Personvernombudet og/eller en jurist. Har man ikke slike roller i virksomheten så ta direkte kontakt med Datatilsynet.

Ulike test-teknikker for de forskjellige fasene i utviklingen Neste steg er de fem forskjellige fasene i SDLC (Software Development Lifecycle). OWASP Testing Guide 4.0 definerer fem faser: Fase 1: Pre-utvikling Fase 2: Design Fase 3: Utvikling Fase 4: Deployment Fase 5: Forvaltning For å ivareta sikkerheten under hver enkelt fase benytter man forskjellige test-teknikker: Manuelle analyser og vurderinger Trusselmodellering Kildekodeanalyse Penetrasjonstester

Fase 1: Pre-utvikling Gå igjennom SDLC metodikken i virksomheten. Benytte bare godkjente verktøy Klassifisere applikasjonen i henhold OWASP ASVS eller tilsvarende Vurdere hvordan virksomhetens policies (retningslinjer) dikterer krav til applikasjonen og hvordan dette kan håndheves Vurdere hvordan virksomhetens standarder dikterer krav til utviklingsmetodikk, arkitektur, sikkerhetskontroller Fase 2: Design Design-fasen er hvor man definerer kravene ut i fra: Virksomhetens generelle krav Lover Lovhjemler Metodikk Infrastruktur Sensitivitetsgrad Mye av dette vil være tilrettelagt og åpenbart hvis man benytter definerte klassifiseringsmetodikker som OWASP ASVS. Design-fasen er hvor man bestemmer arkitekturen som igjen dikterer protokoller. Her setter man opp grafiske skisser ( sekvensielle flytdiagram) ut i fra brukerhistorier som beskriver applikasjonens interaksjoner mellom: Aktører Forhold mellom alle elementer Protokoller Tiltenkte handlinger Alternative handlinger Spesielle krav Betingelser Når det grafiske diagrammet for brukerhistorier er ferdig går man over det igjen, men denne gangen fra tankesettet til en angriper. Her definerer man potensielle trusler og angrepsvektorer. Truslene skal dokumenteres i et risikoanalyse dokument som tar høyde for trusler innenfor konfidensialitet, integritet og tilgjengelighet. Angrepsvektorene man definerer på dette stadiet er grunnlaget for Abuse-Cases man tester for i utviklingsfasen.

Fase 3: Utvikling Utviklingsfasen er der hvor kode produseres, testes, bygges og testes igjen. Utviklerne implementerer produkteiers brukerhistorier og verifiserer at de fungerer som forventet med enhetstester. Før ny utviklede artefakter kan integreres med resten av kodebasen må enhetstester ligge på et tilstrekkelig nivå, samt at kode ikke kan sjekkes inn uten at den har vært igjennom QA fra en senior utvikler eller arkitekt (programmerende arkitekt). Når det kommer til sikkerhetstesting i denne fasen deler man det inn i to kategorier: Funksjonelle Dette er funksjonelle krav (hva applikasjonen SKAL gjøre): Applikasjonen skal bare vise gitt informasjon til autoriserte brukere Passord må minimum være 16 tegn langt og bestå av store og små bokstaver, spesialtegn og tall Lås kontoer etter et visst antall feilede påloggingsforsøk Slike sikkerhetstester utføres oftest med enhetstester og er ofte enkle å verifisere (asserts) Tar ofte utgangspunkt i brukerhistorier (Use-cases) Eksempler på verktøy: JUnit, NUnit, etc. Risikodrevet Risikodrevne krav (hva skal applikasjonen IKKE gjøre): Brukere skal ikke ha mulighet til å destruere eller manipulere data Applikasjonen skal ikke utføre handlinger på ikke-validert input Brukere skal ikke kunne hente ut informasjon om systemet via feilmeldinger Slike sikkerhetstester kan utføres med enhetstester, men vil også kunne trenge andre måter som proxy verktøy (OWASP Zap, Burp Suite), sniffere (Wireshark, Fiddler, TCPDump) eller andre spesielle verktøy. Tar utgangspunkt i misbruk-historier (Abuse-cases) fra Trusselmodellering utført i Fase 2

Under utvikling benytter mange virksomheter automatiske scanner verktøy som verifiserer at kildekode adherer til en gitt standard og at applikasjonen ligger på adekvat testdekning. Man kan også benytte automatiske scannere for sårbarheter (som f.eks. Snyk eller Burp Enterprise). OWASP sier følgende om slike scannere: De oppdager ikke feil i logikk De forstår ikke kontekst De krever ofte manuell gjennomgang for å verifisere eller avkrefte funn

Fase 4: Deployment Etter at alle bruker- og misbrukerhistorier er testet og verifisert, gjennom verifiserte og godkjente verktøy, samt at design og arkitektur er vurdert og analysert, skal applikasjonen deployes til et miljø. Dette miljøet skal ha gjennomgått egne risikovurderinger og sikkerhetstester slik at man kan raskt få oversikt over hvordan miljøet endres ved deployment av en ny applikasjon samt, hvordan applikasjonen som frem til nå har vært testet i et vakuum, blir påvirket av omliggende applikasjoner. Man skal alltid tenke på hvordan andre applikasjoner kan misbrukes for å få tilgang til sin applikasjon, og vice versa. Her vil man ofte benytte penetrasjonstest verktøy og infrastruktur scannere for å verifisere konfigurasjoner: Nettverk Servere Brannmurer Lastbalanserer Proxier Det anbefales å benytte konfigurasjonsstyring i form av (Puppet, Ansible, Chef, Salt, e.l.) som ved første deployment kan konfigureres til en forventet baseline. Slik at man enkelt kan få alarmer ved avvik, samt automatisk korrigering. Logging og monitorering er nøkkelen for ha kontroll på dette. Man skal i denne fasen sikkerhetsteste at: Applikasjonen ikke benytter default eller svake passord Mellomvaren ikke benytter default eller svake passord Applikasjonen og brukere ikke kjører med mer rettigheter enn nødvendig (Laest-Privilege) Vurdere om backup og restore løsninger er tilstrekkelig Backup ivaretar Konfidensialitet, Integritet og Tilgjengelighet for data og brukere Man benytter penetrasjonstester, enhets- og systemtester, akseptansetester og konfigursasjonsanalyser for å verifisere sikkerheten i denne fasen.

Fase 5: Forvaltning Når en applikasjon er produksjonssatt og er i forvaltning er det viktig at den logger metrikker. Man vil da kunne sette en baseline på hva som er normal oppførsel for applikasjonen. Dette gjør det mulig å detektere anormal oppførsel og agere på hendelser tidlig. De fleste applikasjoner er under konstant endring i hele sitt livsløp i form av videreutvikling eller patching, antall brukere endres, eller den underliggende infrastrukturen endres. Ved slike endringer må man revurdere applikasjonens risikostatus. Dette gjøres ved: Regresjonstester Helsesjekker Oppdaterte trusselmodelleringer Enhver applikasjon anbefales å ha Sårbarhetsdatabaser. Dette er en oversikt over applikasjonens svakheter (både nåværende og tidligere). Man vil aldri ha en applikasjon uten risiko, og de fleste vil befinne seg i en situasjon der du har sårbarheter du er klar over. Årsaken til at man har sårbarheter kan være: Finnes ingen fiks For dyr å fikse Velger å akseptere risikoen Manglende kompetanse Disse sårbarhetene er det viktig å ha kontroll på. Man bør derfor ha en database om disse som inneholder informasjon på: Type sårbarhet Rot årsak Mulige tiltak Påvirkede applikasjoner Man vil da kunne vurdere eksisterende svakheter ved f.eks. sprint planleggingsmøter om de skal prioriteres inn i sprinten eller ikke.

Metrikker og rapportering Har man gode metrikker og utfører alle ovenfor nevnte steg for virksomhetens applikasjoner, blir det mye lettere å forstå din risikoapetitt, og planlegge dette inn i den overordnede sikkerhetsstrategien. Det sies at antall sårbarheter per 1000 linjer kode ligger på mellom 7-10. Ergo, store applikasjoner bør testes oftere enn mindre enkle applikasjoner, og én test alene kan redusere antallet med opp til 25%. Metrikker hentet ut fra test data støtter opp under blant annet: Blir vi sikrere utviklere Reduserer vi angrepsflaten Møter vi alle sikkerhetskrav Hvilken sikkerhetsaktivitet er mest effektiv Hvilke verktøy er mest effektive Har vi tilstrekkelige sikkerhetskontroller Har vi for mye sikkerhetskontroller Hvor mange registrerte feil har vi Hvilke team finner flest eller minst sikkerhetsfeil Elsk dine testere og husk at vi alle er på samme lag og bare ønsker at våre data behandles, lagres og distribueres på så trygg og forsvarlig måte som mulig.