Zelfs de meest bescheiden aspecten van een programma kan beveiligingsrisico's te presenteren. Basic input van de gebruiker kan kortsluiting interne code van een programma op verschillende manieren . De ingang kan de werking van de drukkerij -functies gebruiken om toegang te krijgen tot het programma stroom van controle door het overschrijven van de grenzen van de functie . Of , het kan een overschrijding van de buffer grenzen te stellen voor het door de programmeur om gegevens buiten zijn programmeur - aangewezen ruimte beïnvloeden . Hoe dan ook , invoer van de gebruiker bepaalt hoe het programma wordt uitgevoerd , mogelijk in de richting van kwaadaardige doeleinden . Formaat Strings opmaak strings in C en C + + zijn onderdeel van de input en output functies . De format string bevat data om data naar het scherm . Format strings hebben twee belangrijke componenten. De eerste is de fundamentele snaar te drukken , met tekens en leestekens . De tweede component bevat speciale tekens gemarkeerd met percentage tekens die dienen als tijdelijke aanduidingen voor variabele data . Deze symbolen bestaan in de string , en worden vervangen tijdens de productie met de waarden die in variabelen . Het volgende voorbeeld illustreert een eenvoudige printf statement met een format string : char x = " c " ; int y = 10 ; printf ( " Printing Tekens % c en Decimalen % d " , , x , y ) ; Opmaakreeks Aanvallen de onzekerheid van het format strings ligt in hoe de symbolen ingebed in de string verwijzing andere delen van het programma . Bijvoorbeeld , kan een aanvaller invoeren van gegevens in een variabele in een tekenreeks symbolen die haar in staat stellen om andere frames van de uitvoering van het programma injecteren . Daarbij kan de aanvaller waarden in de variabelen buiten de werkingssfeer van de afdruk functie te wijzigen . Bovendien zou de aanvaller mogelijk toegang waarden geheugen dat de locatie van de functies vertegenwoordigen . De aanvaller kan dan veranderen die waarde te wijzen naar een andere functie , waardoor de volgorde van uitvoering te veranderen en in wezen kaping van het programma . Invoerbuffers Input buffers zijn ruimten van gegevensopslag door de programmeur om gegevens die door de gebruiker te houden . Meestal invoerbuffers handvat input van de gebruiker van log in namen en wachtwoorden . Specifiek voor de C -programmeertaal , die niet de moedertaal stringverwerkende , invoerbuffers bestaan als arrays van karakters met een vastgestelde grootte . In dit geval is het aan de programmeur om gegevens voor de input van de gebruiker toe te wijzen . Buffer Overflow Een aanvaller zou kunnen profiteren van de beperkingen van deze buffers door overstromingen het met data . In het eenvoudigste voorbeeld , een array van karakters bedoeld om een log te houden in naam zou 20 ruimte hebt toegewezen , maar een aanvaller geeft het meer dan twintig personages te verwerken . In dit geval , de extra karakters overschrijven geheugenlocaties onmiddellijk na de array. Deze geheugenlocaties eventueel beschikken over gegevens om uitvoering van het programma relevant zijn , zoals voorwaardelijke variabelen voor flow control statements of verwijzingen naar functies op de stapel . Net als de format string aanval , dit wezen in staat de aanvaller om het programma te kapen .
|