Hvad er en sikkerhedsfejl?
En sikkerhedsfejl i computersoftware er en fejl i dens programmerede operation, der kan give en bruger utilsigtet adgang til funktioner, ressourcer eller data, der ellers ville blive beskyttet af programmet. Årsagen til en sikkerhedsfejl kan omfatte fejl i programmering, forkert forståelse af eksterne biblioteker eller tilsyn, når man flytter fra en testversion af et program til en udgivelsesversion. Det kan være vanskeligt at diagnosticere og reparere en sikkerhedsfejl, fordi det har potentialet til at være en kombination af flere aspekter af programmet, hvoraf nogle kan være forudkompileret uden nogen original kildekode tilgængelig for programmerere til at undersøge Der kan opstå problemer, når en funktion eller klasse udfører handlinger, der er ukendt eller uventet, såsom at ændre en variabel, der har en del af programtilstanden eller ændrer intern korrektbånd uden at underrette tilknyttede elementer. Dette kan føre til, at andre dele af programmet fungerer på antagelser eller omgås fuldstændigt, hvilket skaber et sikkerhedshul, der kunne udnyttes. Eksterne biblioteker udviklet af kommercielle softwarevirksomheder kan undertiden forårsage et sikkerhedsproblem, især i tilfælde som grafiske brugergrænseflader (GUI'er) og netværksprotokolindpakninger, der indeholder en stor mængde skjult behandlingskode.
Andre grunde til, at en sikkerhedsfejl kan eksistere, inkluderer enkle programmeringsfejl og problemer med hukommelsesallokering, der kan overskrive kodesegmenter eller spildoplysninger fra hukommelsen til områder, hvor den kan udnyttes. Uudviklede funktioner inden for et program kan også forårsage en sikkerhedsfejl ved at tillade en betingelse inden for programmet, der kan videregive udførelsen til en uafsluttet del af koden uden korrekt sikkerhedskontrol for input og output. Jo større og mereKompleks et program er, jo højere er sandsynligheden for, at der findes en sikkerhedsfejl inden for koden.
Der er flere måder at forsøge at forhindre, at en sikkerhedsfejl passerer til endelige udgivelsesversioner af software. En af de vigtigste er brugertestning, hvor mange mennesker forsøger at bruge programmet for at se, om det fungerer korrekt. Brug af softwareprofilere - programmer, der undersøger og registrerer hukommelsesbrug og anden statistik, mens software kører - kan hjælpe med at fange nogle interne fejl, der kan føre til et sikkerhedsproblem. Når bugsene bliver fanget og repareret, frigiver de fleste virksomheder opdateringer eller patches, der eliminerer de opdagede fejl i software, der allerede er i distribution.