Buffer overflows zijn vaak beveiligingsproblemen voor computersystemen vereisen input van de gebruiker , zoals aanmeldingsgegevens. Een buffer overflow ontstaat wanneer een variabele in de code bedoeld om te houden informatie door de gebruiker ( zoals een inlognaam ) ingediend, is niet groot genoeg . In dit geval , de extra gegevens die door de gebruiker " overloopt " het beschikbare geheugen toegewezen . Deze gebeurtenis , de " Buffer Overflow " kan resulteren in extra gegevens overschrijven of wijzigen van gegevens in andere programma's in het geheugen . Dit voorbeeld toont hoe een buffer overflow werkt op het niveau van de code . Wat je nodig hebt tekst editor C /C + + compiler of IDE zoals Microsoft Visual Studio Toon Meer Aanwijzingen 1 Maak de buffer . Volg dit voorbeeld : # Include int main ( ) { char login_name [ 20 ] ; printf ( " Voer login : " ) ; scanf ( " % s " , login_name ) ; printf ( " Buffer Overflow " ) ; } ! deze fundamentele code maakt een karakter array ( een woord , in wezen ) genaamd " login_name " dat invoer van de gebruiker zal houden . Merk op dat " login_name " is slechts 20 tekens lang . Vraagt het programma daarna voor de input van de gebruiker en slaat de informatie in " login_name . " Kopen van 2 Want de buffer overflow . Compileer het programma en voer het uit . Wanneer de gevraagd, voert een loginnaam dat 20 tekens overschrijdt . Bijvoorbeeld : Voer uw inloggegevens in : . " . Enter" DIT IS EEN LANGE ZIN DAT DE RUIMTE IS FOUT IN HET AANMELDEN VARIABELE Hit De exit -bericht wordt afgedrukt en het programma wordt beëindigd . De variabele heeft de beschikbare bufferruimte overschrijding in de variabele " login_name " . De vraag is dan , wat is er gebeurd ? 3 Begrijp de werking van computergeheugen . Als de input van de gebruiker is opgeslagen in " login_name , " de overtollige informatie ( elk teken meer dan 20 tekens ) werd in het geheugen buiten de grenzen van de variabele geschreven. Deze gegevens moeten ergens liggen . In dit geval wordt deze opgeslagen in het geheugen direct grenzend aan waar de variabele " login_name " ligt . Door te gaan over de grenzen van de login variabele , de extra data ( opzettelijk of niet ) herschrijft de gegevens onmiddellijk naast de variabele . Dit betekent dat de hacker in principe zou kunnen herschrijven code , en de manier wijzigen waarop de code werkt , wezen bezit het systeem . 4 Realiseer Linux kwetsbaarheden . Linux is gecodeerd in C /C + + , en veel van haar functionaliteit vereist het manipuleren van tekenreeksen . Echter , veel moderne distributies van Linux te beschermen tegen gevallen van buffer overflow op punten waar input van de gebruiker vereist is , hetzij door middel van bescherming stack of dynamische resizen karakter arrays . Kwetsbaarheden bestaan nog steeds : de USB- buffer overflow exploit ontdekt in 2011 is een voorbeeld . In het geval USB , een extra lange USB- ID kan overstromen een systeem variabele in Linux .
|