Qu'est-ce qu'une Format String Vulnerability?
Pour comprendre ce qu'est une chaîne de format, la vulnérabilité est, vous devez d'abord savoir ce qu'est une chaîne de format est. Une chaîne de format est une manière de raconter comment le compilateur C, il convient format des numéros quand il les imprime.
Format Strings in C
Dans la programmation en langage C il ya un certain nombre de fonctions qui acceptent une chaîne de format comme un argument. Ces fonctions comprennent fprintf, printf, sprintf, snprintf, vfprintf, vprintf, vsprintf, vsnprintf, setproctitle, syslog, et autres.
La plus commune est printf. L'utilisation de printf est:
printf format [arguments ...]
printf sorties de la valeur de [arguments ...] dans le format spécifié par le format.
Un exemple d'appel à printf est:
printf ( "La zone de code est:% d \ n", 303);
Supported format specifiers diffèrent d'un compilateur C à l'autre. Les spécificateurs de format sont soutenus dans le cadre de FreeBSD:
% d Convertir entier décimal signé à chaîne. % u Convertir entier en string unsigned décimale. % i Convertir entier décimal signé à chaîne, l'entier mai soit en décimal, en octal (avec un 0) ou en hexadécimal (avec un 0x). % o Convertir entier en octal unsigned chaîne. % x ou% X Converti à unsigned integer chaîne hexadécimale, en utilisant uniquement des chiffres 0123456789abcdef `` x''pour''et `` 0123456789ABCDEF de X). % c Converti à l'entier de caractères Unicode, il représente. % s Pas de conversion, il suffit d'insérer chaîne. % f Convertir nombre à virgule flottante à la décimale signée chaîne de la forme xx.yyy, où le nombre de y, est déterminée par la précision (par défaut: 6). Si la précision est de 0, aucun point décimal est la sortie. % e ou% E Convertir nombre à virgule flottante à la notation scientifique, sous la forme x.yyye +-zz, où le nombre de y, est déterminée par la précision (par défaut: 6). Si la précision est de 0, aucun point décimal est la sortie. Si le formulaire est utilisé E alors E est imprimé au lieu de e. % g ou% G Si l'exposant est inférieur à -4 ou supérieur ou égal à la précision, puis de convertir nombre à virgule flottante que pour% e ou% E. Sinon, pour convertir% f. Trailing zéros et un point décimal mobile sont omis. %% Pas de conversion: il suffit d'insérer%.
Pour plus d'informations sur le format des prescripteurs, se reporter à la page de manuel de "format" sur votre système Unix le plus proche.
Format String Vulnerability attaques
Format string vulnerability attaques se répartissent en trois catégories: déni de service, de la lecture et l'écriture.
- Format string vulnerability attaques par déni de service se caractérisent par l'utilisation de plusieurs instances du spécificateur de format% s pour lire les données hors de la pile jusqu'à ce que le programme tente de lire des données provenant d'une adresse illégale, ce qui cause le programme d'accident.
- Format string vulnerability lecture attaques utilisent généralement le format% x spécificateur pour imprimer les sections de la mémoire que nous n'avons normalement pas accès.
- Format string vulnerability écrit attaques utiliser le% d,% x% u ou le format des prescripteurs d'écraser le pointeur d'instruction et de la force l'exécution de l'utilisateur fourni shell code.
Autres sources d'information sur Format String Vulnerabilities
Pour de plus amples renseignements sur l'exploitation de vulnérabilités chaîne de format, reportez-vous à Exploiter Format String Vulnerabilities par SCUT, et Format String Attacks par Tim Newsham.
Apprenez comment prévenir les vulnérabilités de chaîne de format de votre code source avec ces excellents livres sur la programmation sécurisée de Amazon.com
|


