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 være beskyttet af programmet. Årsagen til en sikkerhedsfejl kan omfatte fejl i programmering, forkert forståelse af eksterne biblioteker eller oversigter, når du flytter fra en testversion af et program til en release-version. 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 forudkompileres uden nogen original kildekode til rådighed for programmerere at undersøge.
En af de primære årsager til en sikkerhedsfejl kan være samspillet mellem to forskellige dele af computerkoden, der muligvis ikke er skrevet af den samme person. Problemer kan opstå, når en funktion eller klasse udfører handlinger, der er ukendte eller uventede, såsom at ændre en variabel, der indeholder en del af programtilstanden eller ændre interne egenskaber uden at meddele tilknyttede elementer. Dette kan føre til, at andre dele af programmet fungerer på antagelser eller til at blive omgået fuldstændigt, hvilket skaber et sikkerhedshul, der kan 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 der muligvis findes en sikkerhedsfejl, inkluderer enkle programmeringsfejl og problemer med hukommelsesallokering, der kan overskrive kodesegmenter eller spild information fra hukommelse til områder, hvor det kan udnyttes. Uudviklede funktioner i et program kan også forårsage en sikkerhedsfejl ved at tillade en betingelse i programmet, der kan overføre udførelsen til en uafsluttet del af koden uden korrekt sikkerhedskontrol for input og output. Jo større og mere komplekst et program er, jo større er sandsynligheden for, at der findes en sikkerhedsfejl inden for koden.
Der er flere måder at forsøge at forhindre, at en sikkerhedsfejl overgår til den endelige version af software. En af de vigtigste er brugertest, hvor mange mennesker forsøger at bruge programmet til at se, om det fungerer korrekt. Brug af softwareprofilere - programmer, der undersøger og registrerer hukommelsesbrug og anden statistik, mens softwaren kører - kan hjælpe med at fange nogle interne fejl, der kan føre til et sikkerhedsproblem. Idet fejlene bliver fanget og repareret, frigiver de fleste virksomheder opdateringer eller programrettelser, der fjerner de opdagede fejl i software, der allerede er i distribution.