CyberGlossary

Vulnérabilités

Vulnérabilité de chaîne de format

Aussi appelé: Bug de format printf

Définition

Faille due à l'utilisation d'une entrée contrôlée par l'utilisateur comme chaîne de format des fonctions de type printf, permettant la lecture ou l'écriture arbitraire de mémoire.

Les bugs de chaîne de format apparaissent lorsqu'un développeur écrit printf(entree_utilisateur) au lieu de printf("%s", entree_utilisateur). Les spécificateurs comme %x divulguent la mémoire de pile, %s déréférence des pointeurs arbitraires et %n écrit le nombre d'octets imprimés à une adresse mémoire — fournissant des primitives lecture/écriture arbitraires. L'exploitation classique cible les entrées GOT/PLT, les pointeurs de fonction ou les canaries. Les chaînes d'outils modernes avertissent (-Wformat-security, FORTIFY_SOURCE) et de nombreux langages interdisent le motif, mais le bug subsiste en C hérité, firmware embarqué et shells. La défense est mécanique : ne jamais passer une entrée non fiable comme chaîne de format et préférer des formateurs typés comme fmtlib, println! de Rust ou fmt de Go avec verbes explicites.

Exemples

  • CVE-2000-0573 (wu-ftpd) : chaîne de format dans site exec, root distant.
  • Routeurs embarqués journalisant directement vers syslog avec des champs contrôlés par l'attaquant.

Termes liés