Leksjon 11: Proggramvaresikkerhet Flashcards
(18 cards)
Hva er programvaresikkerhet?
Å utvikle programvare som oppfører seg som forventet- også under angrep.
Hva er bugs og flaws?
Bugs: Implementasjonsfil- ofte lett å fiks
Flaws: Designfeil- vanskeligere å oppdage og rette
Hvorfor er sikkerhet fra start viktig?
Fordi designfeil (flaws) er vanskligeere å rette senere.
Hvorfor er det vanskelig å mål programvaresikkerhet?
Fordi angrep er ulike og data om angrep er ufullstendige.
Hva er BSIMM
Et rammeverk som brukes for å måle modenhet og praksis i programvaresikkerhet hos virksomheter. Det viser hva andre faktisk gjør for å utvikle sikker programvare – basert på observasjoner, ikke teori.
🎯 Formål med BSIMM:
Hjelpe virksomheter å vurdere og forbedre sikker programvareutvikling
Vise beste praksis fra ekte selskaper
Gi målbare aktiviteter virksomheter kan bruke
Building Security In Maturity Model (BSIMM)- praksisområder
BSIMM består av 4 hovedområder med totalt 12 praksisområder, og mange konkrete aktiviteter innen hvert område.
De 4 hovedområdene:
Ledelse og styring – strategi, opplæring, etterlevelse
Etterretning – angrepsmodeller, design, standarder
Trykkpunkter – analyse, kodegjennomgang, testing
Utrulling – penetrasjonstesting, miljø, konfigurasjon
Hva er en arkitkturanalyse
Analyse for å oppdage strukturelle sikkerhetsfeil i design. Oppdage flaws før det er for seint..
Hvilke steg inngår i en arkitkturanalyse?
Motstandsdyktighet mot angrep
➤ Bruk trusselmodellering, f.eks. STRIDE:
S: Spoofing (late som du er noen andre)
T: Tampering (endre data)
R: Repudiation (fornekte handling)
I: Information disclosure (lekkasje)
D: Denial of Service (angrepet stopper tjenesten)
E: Elevation of Privilege (få høyere tilgang enn du skal)
➤ Bruk DREAD for å vurdere alvorlighetsgrad:
Damage, Reproducibility, Exploitability, Affected users, Discoverability
Finne tvetydigheter
➤ Let etter uklare eller ufullstendige antakelser/design
➤ To personer analyserer systemet hver for seg og diskuterer funn
Sårbarheter i underliggende systemer
➤ Analyser hvilke plattformer, biblioteker og komponenter som brukes
➤ Hva skjer hvis disse svikter eller endrer seg?
STRIDE/DEAD- Hva står STRIDE for
Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
Hva står DREAD for?
Damage, Reproducibility, Exploitability, Affected Users, Discoverability.
Hva er penetrasjonstesting?
Simulerte angrep for å teste sikkerheten – ofte gjort av eksterne eksperter.
Hvorfor trengs penetkasjonstesting, selv ved sikker utvikling?
Fordi ingen er feilfrie og angriperee tenkeer utenfor forventede scenarier.
OWASP Top Ten
Injisering
Råtten autentisering
Eksponering av sensitive data
XML-eksterne entiteter (XXE)
Råtten aksesskontroll
Feilkonfigurert sikkerhet
Cross-site scripting (XSS)
Usikker deserialisering
Komponenter med kjente sårbarheter
Utilstrekkelig overvåkning og deteksjon
Sikkrhetsfeller å unngå
🔐 1. Ikke anta tillit
Betydning:
Ikke stol på data, brukere eller systemer automatisk – sjekk og bekreft alltid.
Sikkerhetsfeil det forebygger:
Angrep fra innsiden (insider threat)
Brukere som gir seg ut for å være noen andre (spoofing)
Dårlig validering av input (kan føre til injeksjonsangrep, XSS osv.)
Eksempel:
Ikke anta at en bruker som er pålogget fortsatt er den samme etter 30 minutter – krev re-autentisering etter timeout.
✅ 2. Autoriser etter autentisering
Betydning:
Før du gir tilgang til noe, må du både vite hvem personen er (autentisering) og hva de har lov til å gjøre (autorisasjon) – i den rekkefølgen.
Sikkerhetsfeil det forebygger:
At en bruker kan gjøre mer enn de skal (privilegieforløfting)
Gammel tilgang (f.eks. når en ansatt bytter rolle, men beholder gamle rettigheter)
Aksesskontroll-feil (f.eks. en vanlig bruker får admin-tilgang)
⚙️ 3. Skill mellom data og kontrollinstruksjon
Betydning:
Data (f.eks. brukerinntasting) skal aldri blandes med programlogikk/kode. Du må behandle brukerinput som potensiell trussel.
Sikkerhetsfeil det forebygger:
Injeksjonsangrep, som SQL-injeksjon og Command injection
At brukere kan få applikasjonen til å utføre kommandoer den ikke skulle
Hva skal man gjør med input?
All data som kommer utenfra – enten fra brukere, andre systemer, eller sensorer – må betraktes som mistenkelig og valideres før bruk.
📋 Bruk hvitlisting (whitelisting)
Tillat kun det du vet er trygt, i stedet for å blokkere det som er farlig (svartlisting).
– Eksempel: Tillat kun tall 0–9 i et telefonnummer, i stedet for å prøve å blokkere tegn som <, ‘, etc.
🧭 Sentralisert kontroll av validering
Ha én sentral plass i koden hvor validering gjøres, ikke spredd rundt.
– Dette gjør det lettere å oppdatere og sikre valideringen.
Hva er en sikkerhetsforkjemper?
En utvikler med fokus på sikkerhet i teamet sitt.
Hva er viktig for trygg bruk av kryptografi?
Bruk standarisrte algoritmer og ekstrahjelp. Unngå å lage egne løsninger
Hva betyr «lisens til å kode»?
Man bør ikke lære å kode uten å lære sikker koding.