CyberGlossary

Vulnerabilidades

Vulnerabilidad de cadena de formato

También conocido como: Bug de formato printf

Definición

Fallo causado por pasar entrada controlada por el usuario como cadena de formato a funciones tipo printf, permitiendo lecturas o escrituras arbitrarias en memoria.

Los fallos de cadena de formato ocurren cuando un desarrollador escribe printf(input_usuario) en lugar de printf("%s", input_usuario). Especificadores como %x filtran memoria de la pila, %s desreferencia punteros arbitrarios y %n escribe el número de bytes impresos en una dirección, obteniéndose primitivas arbitrarias de lectura y escritura. La explotación clásica apunta a entradas GOT/PLT, punteros a funciones o canarios de pila. Las cadenas de herramientas modernas avisan (-Wformat-security, FORTIFY_SOURCE) y muchos lenguajes prohíben el patrón, pero el bug sigue apareciendo en C heredado, firmware embebido y shells. La defensa es mecánica: nunca pases entrada no confiable como cadena de formato y usa formateadores tipados como fmtlib, println! de Rust o fmt de Go con verbos explícitos.

Ejemplos

  • CVE-2000-0573 (wu-ftpd): cadena de formato en site exec, root remoto.
  • Routers embebidos que registran directamente en syslog con campos controlados por el atacante.

Términos relacionados