Sikkerhetstesting tar for seg artefaktene enheter og komponenter snarere enn systemet som helhet. Det er en blanding av en “hvit-hatt” og en “svart-hatt” tilnærming, og kan gjøres fra utsiden og inn, eller fra innsiden og ut. Sikkerhetstesting drives av misbrukseksempler (misuse cases/abuse cases), og omfatter to strategier: Testing av sikkerhetsfunksjonalitet, og risikobasert testing basert på angrepsmønster.
Domenedrevet design for sikkerhet
Hvorfor trenger vi en domenemodell for sikkerhet? Argumentet lyder at hvis vi vet nøyaktig hva systemet skal gjøre, så vet vi også hva det ikke skal gjøre.
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.
Statisk kildekodeanalyse
Penetrasjonstesting
Ifølge Gary McGraw hviler programvaresikkerhet på tre pilarer:
- 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.
- 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).
- Kunnskap og god praksis: Alle utviklere må ha et minimum av sikkerhetskunnskap, og kunne bruke sjekklister som OWASP Top 10.
Sikkerhetsstandarder og evaluering
Det finnes mange sikkerhetsstandarder, og mange av disse går det an å sertifisere etter. Når vi sier “sikkerhetsevaluering”, mener vi vanligvis å bruke ISO/IEC 15408, også kjent som Common Criteria. Andre kjente standarder omfatter ISO/IEC 27001, ISF Standard Good Practice, ITIL, og COBIT. Disse fokuserer mer på hvordan organisasjonen er bygget opp (rutiner etc.) enn på hvordan man utvikler programvare.
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?
Innebygget personvern
Innføringen av GDPR var en gullgruve for mange konsulentselskaper – mange firma var usikre på hva det ville medføre, og brukte hundre-tusenvis av kroner på å bli “GDPR-klare”. En av de mest merkbare konsekvensene av GDPR var at mange virksomheter så seg nødt til å vaske epostlistene sine, og slette alle mottakere som ikke hadde gitt eksplisitt samtykke. Derfor fikk mange av oss gjentatte eposter hvor vi ble bedt om å bekrefte at vi fortsatt vill stå på epostlisten.
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
Trusselmodellering
Hva er trusselmodellering? Hva mener vi med angrepsflate? Hvor kommer tillit inn i bildet? Og hva har et bilde fra en utenlandsk fotgjengerovergang med saken å gjøre? Fortvil ei, svarene følger!