dnstracerは、指定されたホスト名について、指定されたドメインネームサーバー(DNS)がどこから情報を取得しているかを特定し、権威サーバーに至るまでDNSサーバーのチェーンを辿ります。
dnstracer 1.9以前におけるスタックベースのバッファオーバーフローにより、攻撃者はargv[0]のstrcpy呼び出しで長いname引数を不正に処理させ、任意のコードを実行できる可能性があります。
/*dnstracer_broken.h*/
#define NS_MAXDNAME 1024
/*dnstracer.c*/
strcpy(argv0, argv[0]);
argv[0]の長さが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;
}