C · Avançado · Inglês · Técnico
format string vulnerability
Falha em que dados controlados pelo usuário são usados como string de formato em printf, permitindo ler ou gravar memória por meio de especificadores como %x e %n.
Onde usar
printf(entrada) em vez de printf("%s", entrada) é o caso típico. O gcc avisa com -Wformat-security, e o aviso deve ser tratado como erro.
Em código
char *s = argv[1];
printf(s); // vulnerável
printf("%s", s); // seguroExemplos
Passing user input as the format is a format string vulnerability.
Passar a entrada do usuário como formato é uma format string vulnerability.
Compile with -Wformat-security to catch this format string vulnerability.
Compile com -Wformat-security para pegar essa format string vulnerability.
Cuidado
Achar que filtrar a entrada basta: o formato deve ser sempre uma constante no código.