Streamripper HTTP头解析远程缓冲区溢出漏洞
发布日期:2007-08-12
更新日期:2007-08-14
受影响系统:Streamripper Streamripper < 1.62.2
不受影响系统:Streamripper Streamripper 1.62.2
描述:
BUGTRAQ ID:
25278
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:也做了同样的假设。如果用户受骗连接到了恶意的服务器的话,就可能触发缓冲区溢出,导致执行任意指令。
<*来源:Chris Rohlf
链接:
http://marc.info/?l=bugtraq&m=118702981212569&w=2
http://secunia.com/advisories/26406/
*>
建议:
厂商补丁:
Streamripper
------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://sourceforge.net/project/shownotes.php?group_id=6172&release_id=531738浏览次数:2519
严重程度:0(网友投票)