Hva er en sikkerhetsfeil?
En sikkerhetsfeil i dataprogramvare er en feil i sin programmerte operasjon som kan gi en bruker utilsiktet tilgang til funksjoner, ressurser eller data som ellers ville blitt beskyttet av programmet. Årsaken til en sikkerhetsfeil kan omfatte feil i programmering, feil forståelse av eksterne biblioteker eller tilsyn 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 det har potensial til å være en kombinasjon av flere aspekter av programmet, hvorav noen kan være forhåndskompilert 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 datakoden som kanskje ikke har blitt skrevet av den samme personen. Det kan oppstå problemer 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 intern riktigbånd uten å varsle tilknyttede elementer. Dette kan føre til at andre deler av programmet opererer med forutsetninger, eller for å 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 (GUIS) og nettverksprotokollinnpakninger som inneholder en stor mengde skjult prosesseringskode.
Andre grunner til at en sikkerhetsfeil kan eksistere inkluderer enkle programmeringsfeil og problemer med minnetildeling som kan overskrive kodesegmenter eller søl informasjon fra minne til områder der den kan utnyttes. Ubyggede funksjoner i et program kan også forårsake en sikkerhetsfeil ved å tillate en betingelse i programmet som kan gi utførelse til en uferdig del av koden uten riktig sikkerhetskontroll for inngang og utdata. Jo større og merKomplekset et program er, jo høyere er sannsynligheten for at en sikkerhetsfeil eksisterer i koden.
Det er flere måter å prøve å forhindre at en sikkerhetsfeil går over til 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 programvareprofilere - programmer som undersøker og registrerer hukommelsesbruk 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, frigjør de fleste selskaper oppdateringer eller oppdateringer som eliminerer de oppdagede feilene i programvare som allerede er i distribusjon.