
CVE-2017-9430 수정
dnstracer는 주어진 호스트 이름에 대해 주어진 도메인 이름 서버(DNS)가 어디서 정보를 가져오는지 확인하고, DNS 서버의 체인을 따라 권위 있는 답변까지 추적합니다.
dnstracer 1.9까지의 스택 기반 버퍼 오버플로로 인해 공격자가 긴 name 인수를 포함한 명령줄을 통해 임의 코드를 실행할 수 있습니다. 이는 argv[0]에 대한 strcpy 호출에서 잘못 처리됩니다.
/*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;
}