
CVE-2017-9430 Behebung
dnstracer ermittelt, woher ein bestimmter Domain Name Server (DNS) seine Informationen für einen bestimmten Hostnamen bezieht, und folgt der Kette von DNS-Servern bis zur autoritativen Antwort zurück.
Ein stack-basierter Pufferüberlauf in dnstracer bis Version 1.9 ermöglicht Angreifern, beliebigen Code auszuführen, indem sie über die Kommandozeile ein langes Namensargument übergeben, das in einem strcpy-Aufruf für argv[0] falsch verarbeitet wird.
/*dnstracer_broken.h*/
#define NS_MAXDNAME 1024
/*dnstracer.c*/
strcpy(argv0, argv[0]);
Überprüfen, ob die Länge von argv[0] größer als 1024 ist.
/*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;
}