CoreHTTP http.c远程缓冲区溢出漏洞
发布日期:2007-07-29
更新日期:2007-07-31
受影响系统:CoreHTTP CoreHTTP 0.5.3 alpha
描述:
BUGTRAQ ID:
25120
CoreHTTP是一款小型的Web服务器。
CoreHTTP在处理超长用户请求时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制服务器。
CoreHTTP的http.c文件中存在缓冲区溢出漏洞:
-----------------------------------------------------------------------
struct sprock_t *HttpSprockMake(struct sprock_t *parentsprock) {
struct sprock_t *sprocket;
char req[PATHSIZE], url[PATHSIZE], status[PATHSIZE], temp[BUFSIZE],
...
if ((sprocket = (struct sprock_t *)
malloc(sizeof(struct sprock_t))) == NULL) return NULL;
...
sscanf(parentsprock->buffer, "%[A-Za-z] %s%*[ \t\n]", req, url);
!(the bug/overwrite) --------------------------------------^----^
strncpy(sprocket->parent->url, url, PATHSIZE);
!(the problem) -^
...
for (i = 0; req[i] != '\0'; i++)
req[i] = toupper(req[i]);
!(another problem) -^
...
}
上面代码中的sscanf()调用没有对写入req[]或url[]执行边界检查,导致可能覆盖*sprocket结构指针。如果用户提交了超长请求的话,就可以触发这个溢出,导致执行任意指令。
<*来源:Vade79 (
v9@fakehalo.us)
链接:
http://www.milw0rm.com/exploits/4243
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://www.milw0rm.com/exploits/4243建议:
厂商补丁:
CoreHTTP
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://corehttp.sourceforge.net/浏览次数:2532
严重程度:0(网友投票)