ExpertiDict

C · Avançado · Inglês · Técnico

format string vulnerability

/ˈfɔɹ.mæt stɹɪŋ ˌvʌl.nɚ.əˈbɪ.lə.ti/substantivo

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); // seguro

Exemplos

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.

Veja também

Todos os termos de C