Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Illegal Pointer Value

Abstract
Algumas funções podem retornar um ponteiro para a memória fora dos limites do buffer a ser pesquisado. As operações subsequentes no ponteiro podem ter consequências indesejadas.
Explanation
As funções que procuram caracteres em um buffer podem retornar um ponteiro fora dos limites do buffer fornecido em qualquer uma das seguintes circunstâncias:

- Um usuário controla o conteúdo do buffer a ser pesquisado.

- Um usuário controla o valor a ser pesquisado.

Exemplo 1: O programa curto a seguir usa um argumento de linha de comando não confiável como o buffer de pesquisa em uma chamada para rawmemchr().


int main(int argc, char** argv) {
char* ret = rawmemchr(argv[0], 'x');
printf("%s\n", ret);
}


O objetivo do programa é imprimir uma substring de argv[0], mas ele pode acabar imprimindo alguma parte da memória localizada acima de argv[0].

Esse problema é semelhante a um erro de terminação de string no qual o programador depende de uma matriz de caracteres conter um terminador nulo.
References
[1] M. Howard, D. LeBlanc Writing Secure Code, Second Edition Microsoft Press
desc.semantic.cpp.illegal_pointer_value.master