Schrijven van gegevens op buffers is een routine- onderdeel van de werking elk programma 's , en ook een belangrijke bron van potentiële problemen . Wanneer een programma probeert om meer gegevens in een buffer gezet dan zijn programmeur ontworpen is om vast te houden , kan de daaruit voortvloeiende overloop van gegevens andere programma data corrupt . Dit kan leiden tot software crasht , of mogelijk een middel voor hackers om het programma te kapen en uitvoeren van kwaadaardige code . Buffers en Overflows Een buffer is een array variabele ontworpen om gegevens op te slaan voor het programma te gebruiken op een later moment in de uitvoering ervan . Dit kan informatie een gebruiker in het programma zijn, kan de inhoud van een bestand dat het programma leest , of iets anders voor het programma moeten uitvoeren . Buffers zijn gemaakt met een bepaalde grootte , die is gereserveerd in het geheugen van een computer om gegevens van de buffer op te slaan . Buffer overflows optreden wanneer een programma schrijft een hoeveelheid data van een buffer die de werkelijke grootte overschrijdt, waardoor het programma om gegevens over de locatie van de buffer in het geheugen van de computer en in het geheugen gereserveerd voor andere buffers of variabelen schrijven . crasht een programma crasht wanneer deze in de onmogelijkheid om de taak het is gecodeerd om te presteren op een bepaald punt in de tijd uit te voeren , en de ontwikkelaar niet voorzien van een mechanisme voor het herstellen van dergelijke een mislukking . Buffer overflows kunnen veroorzaken programma laten crashen wanneer de overloop corrumpeert gegevens van de variabele die is opgeslagen in een nabijgelegen geheugenslot . Bijvoorbeeld , indien een overflow van een tekst buffer tekst tekens kunnen schrijven over de nummers die zijn opgeslagen in het geheugen slot een integer variabele . Wanneer het programma toegang tot de gegevens van deze variabele om een berekening uit te voeren , het vindt de tekst tekens in plaats van de getallen . Het programma kan niet wiskundige berekeningen op teksttekens voeren , zodat het programma zou reageren door te crashen . Beveiligingslekken advertentm buffer overbelast kan raken door programma's te crashen , maar hackers kunnen doelbewust dwingen een buffer overload aan de functie van een programma in gevaar brengen . Zo zou geheugenslot een buffer te zijn in de buurt van het geheugenslot dat een bepaald commando voert het programma houdt . Een hacker kan de grootte van de buffer , en de afstand tot geheugenslot van de commando 's uit het einde van de buffer te ontdekken . Hij zou dan dwingen een buffer overflow , dat zou over- schrijf de data tussen de buffer en geheugenslot van de commando's , dan over - schrijven geheugenslot het bevel om het commando te vervangen door een van zijn eigen ontwerp . Wanneer het programma vraagt geheugenslot 's die opdracht en de inhoud ervan uitvoert , zou het code van de hacker worden uitvoeren in plaats van de ene de programmeur bestemd . Voorkomen Buffer overflows Programmeurs kan voorkomen buffer overflows door het instellen van de beveiliging mechanismen om ervoor te zorgen dat het programma niet proberen om meer gegevens te schrijven naar een buffer dan hij ontwierp het om vast te houden . Deze kunnen controleren van de grootte van de data gebruikers proberen erin stopt , door typen of selecteren van een invoerbestand , waardoor het apparaat niet meer bedraagt dan de grootte van de buffer . Programmeurs moeten ook proberen om de mogelijkheden die gebruikers hebben om rechtstreeks gegevens naar een buffer te minimaliseren , zoals elke ingang die rechtstreeks schrijft naar een buffer is een potentiële vector voor een buffer overbelasting aanval .
|