
Correção do CVE-2017-9430
O dnstracer determina de onde um determinado Servidor de Nomes de Domínio (DNS) obtém suas informações para um determinado hostname e segue a cadeia de servidores DNS de volta até a resposta autoritativa.
O estouro de buffer baseado em pilha no dnstracer até a versão 1.9 permite que invasores executem código arbitrário por meio de uma linha de comando com um argumento de nome longo que é maltratado em uma chamada strcpy para argv[0].
/*dnstracer_broken.h*/
#define NS_MAXDNAME 1024
/*dnstracer.c*/
strcpy(argv0, argv[0]);
Verificar se o comprimento de argv[0] é maior que 1024.
/*CVE-2017-9430 Fix*/
if(strlen(argv[0]) >= NS_MAXDNAME)
{
free(server_ip);
free(server_name);
fprintf(stderr, "dnstracer: argument is too long %s\n", argv[0]);
return 1;
}