Konsekvenser av buffer overflow

Konsekvenser av buffer overflow


Skrive data til buffere er en rutinemessig del av ethvert program virkemåte, og også en viktig kilde til potensielle problemer. Når et program prøver å sette mer data i en buffer enn sin programmerer utviklet det til å holde, den påfølgende overløp av data kan skade andre programdata. Dette kan føre til programkrasj, eller potensielt et middel for hackere å kapre programmet og kjøre ondsinnet kode.

Buffere og flyt

En buffer er en matrise variabel designet for å lagre data for programmet til å bruke på et senere tidspunkt i sin utførelse. Dette kan være informasjon brukeren skriver inn i programmet, innholdet i en fil som programmet leser inn, eller noe annet program kan ha behov for å utføre. Buffere er laget med en bestemt størrelse, som er reservert i datamaskinens minne for å lagre buffer data. Buffer overflow oppstår når et program skriver en mengde av data til en buffer som overstiger dens faktiske størrelse, slik at programmet for å skrive data forbi bufferen plassering i datamaskinens hukommelse og inn i minnet reservert for andre buffere eller variabler.

krasj

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 utvikleren inkluderte ikke en mekanisme for å gjenopprette fra en slik svikt. Buffer overflow kan føre til at programmer krasjer når overløp ødelegger variabel data som er lagret i en nærliggende minnespor. For eksempel, hvis en overflyt av en tekst buffer kan skrive inn tekst i løpet av de numrene som er lagret i et heltall variabel minnespor. Når programmet har tilgang til denne variable data for å utføre en beregning, finner den teksttegnene i stedet for tall. Programmet kan ikke utføre matematiske beregninger på teksttegn, slik at programmet ville reagere ved å krasje.

sikkerhets~~POS=TRUNC

I advertentm bufferoverbelastninger 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 hacker kan oppdage størrelsen av bufferen, og avstanden til lede minne sporet fra den ende av bufferen. Han kunne deretter tvinge en buffer overflow som vil overskrive data mellom buffer og kommandoens minnesporet, deretter overskrive kommandoens minnespor for å erstatte kommandoen med en av sine egne design. Når programmet kaller den kommandoen minne slot og utfører innholdet, ville det være å utføre hacker-kode i stedet for en programmerer ment.

Forebygging av buffer overflow

Programmerere kan forhindre 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 kontroll av størrelsen på dataene brukere prøver å legge i det, gjennom å skrive eller velge en input-fil, for å sikre at det 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.