Hva er en sikkerhetsfeil?
En sikkerhetsfeil i datamaskinprogramvare er en feil i den programmerte operasjonen som kan gi en bruker utilsiktet tilgang til funksjoner, ressurser eller data som ellers ville være beskyttet av programmet. Årsaken til en sikkerhetsfeil kan omfatte feil i programmering, feil forståelse av eksterne biblioteker eller oversyn når du går fra en testversjon av et program til en utgivelsesversjon. Det kan være vanskelig å diagnostisere og reparere en sikkerhetsfeil, fordi den har potensial til å være en kombinasjon av flere aspekter av programmet, hvorav noen kan forhåndskompileres uten original kildekode tilgjengelig for programmerere å undersøke.
En av de viktigste årsakene til en sikkerhetsfeil kan være samspillet mellom to forskjellige deler av datakode som kanskje ikke er skrevet av samme person. Problemer kan oppstå når en funksjon eller klasse utfører handlinger som er ukjente eller uventede, for eksempel å endre en variabel som inneholder en del av programtilstanden eller endre interne egenskaper uten å varsle tilknyttede elementer. Dette kan føre til at andre deler av programmet opererer på forutsetninger, eller til å bli forbigått fullstendig, og skape et sikkerhetshull som kan utnyttes. Eksterne biblioteker utviklet av kommersielle programvareselskaper kan noen ganger forårsake et sikkerhetsproblem, spesielt i tilfeller som grafiske brukergrensesnitt (GUI) og nettverksprotokollinnpakninger som inneholder en stor mengde skjult behandlingskode.
Andre årsaker til at det kan eksistere en sikkerhetsfeil inkluderer enkle programmeringsfeil og problemer med minnetildeling som kan overskrive kodesegmenter eller søle informasjon fra minnet til områder der det kan utnyttes. Uutviklede funksjoner i et program kan også forårsake en sikkerhetsfeil ved å tillate en tilstand i programmet som kan overføre kjøringen til en uferdig del av koden uten riktig sikkerhetskontroll for inn- og utdata. Jo større og mer komplekst et program er, jo større er sannsynligheten for at det eksisterer en sikkerhetsfeil i koden.
Det er flere måter å prøve å forhindre at en sikkerhetsfeil går over i endelige utgivelsesversjoner av programvare. Noe av det viktigste er brukertesting, der mange prøver å bruke programmet for å se om det fungerer som det skal. Bruke programvareprofilerere - programmer som undersøker og registrerer minnebruk og annen statistikk mens programvare kjører - kan bidra til å fange noen interne feil som kan føre til et sikkerhetsproblem. Når feilene blir fanget og reparert, slipper de fleste selskaper oppdateringer eller oppdateringer som eliminerer de oppdagede feilene i programvare som allerede er i distribusjon.