Skrive data til buffere er en rutinemessig del av ethvert program funksjonsevne , og også en viktig kilde til potensielle problemer. Når et program forsøker å sette mer data i en buffer enn sin programmerer designet den for å holde, kan påfølgende overløp av data ødelegge andre programområder data . Dette kan føre til programvare krasjer , eller potensielt et middel for hackere å kapre programmet og kjøre ondsinnet kode . Buffere og overflyt
En buffer er en matrise variabel designet for å lagre data for programmet å bruke på et senere tidspunkt i sin utførelse . Dette kan være informasjon en bruker skriver inn i programmet , kan innholdet i en fil som programmet leser inn , eller noe annet programmet trenger å utføre . Buffere er skapt med en bestemt størrelse , som er reservert i en datamaskinens minne for å lagre buffer data. Buffer overflow oppstår når et program skriver en mengde data til en buffer som overstiger den faktiske størrelsen , forårsaker programmet til å skrive data forbi buffer beliggenhet i datamaskinens minne og inn i minnet reservert for andre buffere eller variable.
krasjer
et program krasjer når den finner seg ikke i stand til å utføre oppgaven det har blitt kodet til å utføre på et bestemt tidspunkt , og det er utvikleren inkluderte ikke en mekanisme for å gjenopprette fra en slik en fiasko. Buffer overflow kan føre til at programmer til å krasje når overløp ødelegger den variable data som er lagret i en nærliggende minnespor. For eksempel , hvis en overflow av en tekst buffer kan skrive tekst tegn over tallene som er lagret i en heltallsvariabel minne slot . Når programmet åpner denne variabelen data til å utføre en beregning , finner den teksttegnene i stedet for tall. Programmet kan ikke utføre matematiske beregninger på tekst- tegn , slik at programmet ville reagere ved å krasje .
Sikkerhetsproblemer
advertentm buffer overbelastning kan føre til at programmer til å krasje , men hackere kan bevisst tvinge en buffer overbelastning å kompromittere et program funksjon . For eksempel kan en buffer minne slot være i nærheten av minnespor som har en bestemt kommando programmet utfører . En hackere kan oppdage stor buffer , og avstanden til kommandoen minne -åpningen fra enden av bufferen. Han kunne deretter tvinge en buffer overflow som ville over- skrive data mellom buffer og kommandoen minne slot , så over- skrive kommandoen minne slot for å erstatte kommandoen med en av sine egne design. Når programmet kaller den kommandoen minne slot og utfører innholdet , ville det bli å kjøre hacker kode i stedet for en programmerer ment .
Forebygge bufferoverflyter
programmerere kan hindre buffer overflow ved å iverksette sikkerhetsmekanismer for å sikre at programmet ikke prøve å skrive mer data til en buffer enn han utviklet det til å holde. Disse kan omfatte sjekke størrelsen på dataene brukere prøver å sette inn i den , gjennom å skrive inn eller velge en input-fil , slik at den ikke overstiger størrelsen på bufferen. Programmerere bør også prøve å minimere mulighetene som brukerne har til å skrive data direkte til en buffer , som alle innspill som skriver direkte til en buffer er en potensiell vektor for en buffer overbelastning angrep.