Format-String-Schwachstelle
Was ist Format-String-Schwachstelle?
Format-String-SchwachstelleFehler 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
- 01
CVE-2000-0573 (wu-ftpd): Format-String in site exec, entfernter Root.
- 02
Embedded-Router, die direkt mit angreifergesteuerten Feldern nach syslog loggen.
● Häufige Fragen
Was ist Format-String-Schwachstelle?
Fehler durch Übergabe nutzergesteuerter Eingaben als Format-String an printf-ähnliche Funktionen, der beliebige Lese- und Schreiboperationen im Speicher erlaubt. Es gehört zur Kategorie Schwachstellen der Cybersicherheit.
Was bedeutet Format-String-Schwachstelle?
Fehler durch Übergabe nutzergesteuerter Eingaben als Format-String an printf-ähnliche Funktionen, der beliebige Lese- und Schreiboperationen im Speicher erlaubt.
Wie schützt man sich gegen Format-String-Schwachstelle?
Schutzmaßnahmen gegen Format-String-Schwachstelle kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für Format-String-Schwachstelle?
Übliche alternative Bezeichnungen: printf-Format-Bug.