CVE:CVE-2007-4337
CNNVD:CNNVD-200708-222
StreamRipper能够将网上的MP3流媒体保存到硬盘中，特别适合录制网络MP3广播。
StreamRipper中用于解析HTTP头的代码中存在多个缓冲区溢出漏洞，远程攻击者可能利用此漏洞控制用户系统。
具体位于lib/http.c文件httplib_parse_sc_header()函数的324行：
extract_header_value()函数是通过Location:字符串调用的。
lib/http.c
...
extract_header_value(header, info->http_location, "Location:");
...
        int extract_header_value (char *header, char *dest, char *match)
        {
            char* start = (char *)strstr(header, match);
            if (start) {
                subnstr_until(start+strlen(match), "\n", dest, MAX_ICY_STRING);
                return 1;
            } else {
                return 0;
            }
        }
...
lib/mchar.c
...
        char *subnstr_until(const char *str, char *until, char *newstr, int maxlen)
        {
            const char *p = str;
            int len = 0;
            for(len = 0; strncmp(p, until, strlen(until)) != 0 && len < maxlen; p++)
            {
                newstr[len] = *p;
                len++;
            }
            newstr[len] = '\0';
            return newstr;
        }
...
extract_header_value()假设info->http_location大小为MAX_ICY_STRING(4024)字节，但实际仅为MAX_HOST_LEN(512)字节；对仅有MAX_SERVER_LEN(1024)字节的HTTP头字符串Server:也做了同样的假设。如果用户受骗连接到了恶意的服务器的话，就可能触发缓冲区溢出，导致执行任意指令。
solution:Upgrade streamripper streamripper to a higher version than 1.61.1,1.61.17,1.61.24,1.61.25,1.61.26,1.62,and avoid the version 1.61.1,1.61.17,1.61.24,1.61.25,1.61.26,1.62