Wat is een format string kwetsbaarheid?
Om te begrijpen wat een format string kwetsbaarheid is, moet u eerst weten wat een format string is. Een format string is een manier van vertellen de C compiler hoe het moet formaat nummers als het afdrukken ervan.
Format strings in C
In de C-programmeertaal zijn er een aantal functies die met een format string als argument. Deze functies omvatten fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslogd en anderen.
De meest voorkomende van deze is printf. Het gebruik van printf is:
printf format [argumenten ...]
printf uitgangen de waarde van [argumenten ...] in het formaat van formaat.
Een voorbeeld te noemen printf is:
printf ( "De oppervlakte is:% d \ n", 303);
Ondersteund formaat specifiers verschillen van een C-compiler naar de volgende. Het formaat specifiers ondersteund onder FreeBSD zijn:
% d Converteren naar getal ondertekend decimale string. % u Converteren naar unsigned integer decimale string. % i Converteren naar getal ondertekend decimale string; de integer kan worden in decimalen, in octal (met een leidende 0) of hexadecimaal (met een leidende 0x). % o Converteren naar getal unsigned octal string. % x of X% Converteren naar unsigned integer hexadecimale string, met behulp van cijfers `` 0123456789abcdef''x en `` 0123456789ABCDEF''voor X). % c Converteer integer naar de Unicode-tekens die het vertegenwoordigt. % s Geen verbouwing; net invoegen string. % f Convert floating-point getal naar ondertekend decimale string van de vorm xx.yyy, waar het aantal y's wordt bepaald door de precisie (standaard: 6). Als de precisie 0 dan geen komma uitgang. % e% of E Convert floating-point getal naar wetenschappelijke notatie in de vorm x.yyye +-ZZ, waar het aantal y's wordt bepaald door de precisie (standaard: 6). Als de precisie 0 dan geen komma uitgang. Als de E-vorm wordt gebruikt dan E wordt afgedrukt in plaats van e. % g of% G Als de exponent is kleiner dan -4 of groter dan of gelijk is aan de nauwkeurigheid en vervolgens converteren floating-point getal als voor% e% of E. Anders zetten als voor% f. Trailing nullen en een volgnullen decimaalteken zijn weggelaten. %% Geen conversie: alleen invoegen%.
Voor meer informatie over het formaat specifiers, verwijzen naar de man pagina's voor "formaat" op uw dichtstbijzijnde Unix systeem.
Format string kwetsbaarheid Aanvallen
Format string kwetsbaarheid aanvallen vallen in drie categorieën: denial of service, lezen en schrijven.
- Format string kwetsbaarheid denial of service aanvallen worden gekenmerkt door gebruik te maken van meerdere exemplaren van de% s formaat specificeerder gegevens af te lezen van de stapel totdat het programma probeert te lezen van gegevens uit een illegale adres, die zal leiden tot het programma crasht.
- Format string kwetsbaarheid lezing aanvallen meestal gebruik maken van de% x specificeerder-formaat af te drukken delen van het geheugen dat we niet normaal toegang hebben.
- Format string kwetsbaarheid schriftelijk aanvallen maken gebruik van de% d,% u of% x formaat specifiers te overschrijven de Instructie Pointer werking en uitvoering van door de gebruiker geleverd shell code.
Aanvullende bronnen van informatie over format string kwetsbaarheden
Voor meer informatie over het benutten van format string kwetsbaarheden, verwijzen naar Exploiting Format String Vulnerabilities door SCUT en format string Aanvallen door Tim Newsham.
Leer hoe te voorkomen format string kwetsbaarheden in uw broncode met deze uitstekende boeken over veilig programmeren van Amazon.com
|


