ntop是一套网络流量监控工具。该工具支持自动从网络中识别有用的信息、将截获的数据包转换成易于识别的格式和对网络环境中通信失败的情况进行分析等。 ntop在解析Basic认证的HTTP头时存在空指针应用漏洞。在接收到认证报文后ntop会base64解码值,然后基于冒号进行拆分。如果解码的字符串中不存在冒号,就会对用户名使用默认的NULL值。由于在认证过程中使用strlen()计算用户名的长度,在处理到空的值时会触发分段错误。以下是有漏洞的代码段: static int checkHTTPpassword(char *theRequestedURL, int theRequestedURLLen _UNUSED_, char* thePw, int thePwLen) { char outBuffer[65], tmpOutBuffer[65], *user = NULL, users[LEN_GENERAL_WORK_BUFFER]; if(outBuffer[i] == ':') { outBuffer[i] = '\0'; user = outBuffer; break; } if(strlen(user) >= sizeof(theHttpUser)) user[sizeof(theHttpUser)-1] = '\0';
ntop是一套网络流量监控工具。该工具支持自动从网络中识别有用的信息、将截获的数据包转换成易于识别的格式和对网络环境中通信失败的情况进行分析等。 ntop在解析Basic认证的HTTP头时存在空指针应用漏洞。在接收到认证报文后ntop会base64解码值,然后基于冒号进行拆分。如果解码的字符串中不存在冒号,就会对用户名使用默认的NULL值。由于在认证过程中使用strlen()计算用户名的长度,在处理到空的值时会触发分段错误。以下是有漏洞的代码段: static int checkHTTPpassword(char *theRequestedURL, int theRequestedURLLen _UNUSED_, char* thePw, int thePwLen) { char outBuffer[65], tmpOutBuffer[65], *user = NULL, users[LEN_GENERAL_WORK_BUFFER]; if(outBuffer[i] == ':') { outBuffer[i] = '\0'; user = outBuffer; break; } if(strlen(user) >= sizeof(theHttpUser)) user[sizeof(theHttpUser)-1] = '\0';