Skrivning af data til buffere er en rutinemæssig del af ethvert program skal fungere, og også en vigtig kilde til potentielle problemer. Når et program forsøger at sætte flere data i en buffer end dens programmør designet det til at holde , kan den deraf følgende overløb af data korrupte andre programdata. Dette kan føre til software nedbrud , eller potentielt et middel for hackere at kapre programmet og eksekvere skadelig kode. Buffere og Overløb
En buffer er et array variabel, designet til at gemme data for programmet til at bruge på et senere tidspunkt i sin udførelse . Det kan være oplysninger en bruger i programmet, kan indholdet af en fil, som programmet læser i , eller noget andet program har brug for at udføre. Buffere er skabt med en bestemt størrelse , som er forbeholdt i en computers hukommelse til at gemme buffer data. Buffer overflow opstår, når et program skriver en mængde data til en buffer , der overstiger dens faktiske størrelse , hvilket får programmet til at skrive data forbi bufferen placering i computerens hukommelse og i hukommelsen reserveret til andre buffere eller variabler .
Crashes
et program går ned, når det befinder sig ude af stand til at udføre den opgave, den er blevet kodet til at udføre på et bestemt tidspunkt , og dets udvikler ikke omfatter en mekanisme til at komme fra en sådan en fiasko. Bufferoverløb kan forårsage, at programmer til at gå ned, når overløbet korrumperer variable data , der er lagret i en nærliggende hukommelsesplads. For eksempel . Hvis en overflow af en tekst buffer kan skrive teksttegn over numre, der er gemt i en heltalsvariabel hukommelse slot Når programmet har adgang til denne variabel data til at udføre en beregning , det finder teksttegnene stedet for numre. Programmet kan ikke udføre matematiske beregninger på teksttegn , så programmet vil reagere ved at smadre .
Sikkerhedssvagheder
advertentm buffer overbelastninger kan forårsage, at programmer til at gå ned , men hackere kunne bevidst tvinge en buffer overbelastning for at kompromittere et programs funktion. For eksempel kan en buffer hukommelse slot være i nærheden af hukommelsen slot , der holder et bestemt kommando udfører programmet . En hacker kan opdage størrelsen af bufferen , og afstanden til kommandoen hukommelse slot fra slutningen af bufferen . Han kunne så tvinge en buffer overflow , der ville over- skrive data mellem bufferen og kommandoen hukommelse slot , så over- skriv kommandoen hukommelse slot til at erstatte kommandoen med en af sit eget design . Når programmet kalder denne kommando hukommelse slot og udfører dens indhold , ville det være gennemførelsesorgan hackerens kode i stedet for den ene programmøren hensigten.
Forebyggelse Buffer overflow
Programmører kan forhindre buffer overflow ved at indføre sikkerhedsmekanismer til at sikre, at programmet ikke forsøger at skrive flere data til en buffer , end han designede det til at holde. Disse kan omfatte kontrol af størrelsen af de data brugere forsøger at sætte ind i det , ved at skrive eller vælge et input -fil , for at sikre, at det ikke overstiger størrelsen af bufferen . Programmører bør også forsøge at minimere de muligheder, som brugerne skal skrive data direkte til en buffer , som alle input , der skriver direkte til en buffer er en potentiel løftestang for et buffer overbelastning angreb.