Squid(全称Squid Cache)是一套代理服务器和Web缓存服务器软件。该软件提供缓存万维网、过滤流量、代理上网等功能。 Squid代理ntlm_fetch_string()和ntlm_get_string()函数缺少正确的参数检查,远程攻击者可以利用这个漏洞对服务进行拒绝服务攻击。 问题存在于\"lib/ntlmauth.c\"文件中的\"ntlm_fetch_string\" 函数中,其中安全的缓冲区中获取字符串及其长度,返回返回到lstring结构中的\"rv\": l < 0 || l > MAX_FIELD_LENGTH || o + l > length || o == 0 如果上述的IF检查通过,执行如下代码: rv.str = packet + o; <--- pointer to data 和 rv.l = l; <--- length of data 不过对int32_t offset \"o\"没有进行完整检查是否为负值。如果o = -1000000000或者任何负值,在\"ntlm_check_auth\"中后续的memcpy操作就会导致内存破坏。而造成产生拒绝服务。
Squid(全称Squid Cache)是一套代理服务器和Web缓存服务器软件。该软件提供缓存万维网、过滤流量、代理上网等功能。 Squid代理ntlm_fetch_string()和ntlm_get_string()函数缺少正确的参数检查,远程攻击者可以利用这个漏洞对服务进行拒绝服务攻击。 问题存在于\"lib/ntlmauth.c\"文件中的\"ntlm_fetch_string\" 函数中,其中安全的缓冲区中获取字符串及其长度,返回返回到lstring结构中的\"rv\": l < 0 || l > MAX_FIELD_LENGTH || o + l > length || o == 0 如果上述的IF检查通过,执行如下代码: rv.str = packet + o; <--- pointer to data 和 rv.l = l; <--- length of data 不过对int32_t offset \"o\"没有进行完整检查是否为负值。如果o = -1000000000或者任何负值,在\"ntlm_check_auth\"中后续的memcpy操作就会导致内存破坏。而造成产生拒绝服务。