安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障