CyberGlossary

Schwachstellen

Format-String-Schwachstelle

Auch bekannt als: printf-Format-Bug

Definition

Fehler durch Übergabe nutzergesteuerter Eingaben als Format-String an printf-ähnliche Funktionen, der beliebige Lese- und Schreiboperationen im Speicher erlaubt.

Format-String-Bugs entstehen, wenn ein Entwickler printf(user_input) statt printf("%s", user_input) schreibt. Spezifizierer wie %x lecken Stack-Speicher, %s dereferenziert beliebige Pointer und %n schreibt die Anzahl der bisher ausgegebenen Bytes an eine Speicheradresse – das ergibt beliebige Lese- und Schreibprimitive. Klassische Exploits zielen auf GOT/PLT-Einträge, Funktionspointer oder Stack-Canaries. Moderne Toolchains warnen (-Wformat-security, FORTIFY_SOURCE) und viele Sprachen verbieten das Muster, dennoch tritt es weiterhin in altem C-Code, Embedded-Firmware und Shells auf. Die Verteidigung ist mechanisch: niemals unvertraute Eingabe als Format-String übergeben und typsichere Formatter wie fmtlib, Rust println!, Go fmt mit expliziten Verben verwenden.

Beispiele

  • CVE-2000-0573 (wu-ftpd): Format-String in site exec, entfernter Root.
  • Embedded-Router, die direkt mit angreifergesteuerten Feldern nach syslog loggen.

Verwandte Begriffe