Exim SpamAssassin回复远程缓冲区溢出漏洞
发布日期:2007-05-14
更新日期:2007-05-15
受影响系统:University of Cambridge Exim 4.66
描述:
BUGTRAQ ID:
23977
Exim是由剑桥大学开发的Unix系统上的邮件传输代理(MTA)。
Exim在处理数据回复时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制客户机器。
Exim的spam.c文件中用于处理同apache spamd守护程序通讯的代码中存在漏洞:
----Exim 4.66 Source spam.c--------
.......
int spamd_report_offset;
..................
uschar spamd_version[8];
------------ The messup------------
if( sscanf(CS spamd_buffer,"SPAMD/%s 0 EX_OK\r\nContent-length: \
%*u\r\n\r\n%lf/%lf\r\n%n",
spamd_version,&spamd_score,&spamd_threshold,&spamd_report_offset) != 3 ) \
{
/* try to fall back to pre-2.50 spamd output */
if( sscanf(CS spamd_buffer,"SPAMD/%s 0 EX_OK\r\nSpam: %*s ; %lf / %lf\r\n\r\n%n",
spamd_version,&spamd_score,&spamd_threshold,&spamd_report_offset) != 3 \
) { log_write(0, LOG_MAIN|LOG_PANIC,
"spam acl condition: cannot parse spamd output");
return DEFER;
};
};
-----------------------------
由于在使用sscanf()时没有限制输入中的%X,因此可能溢出spamd_version。
此外对spamd_report_offset没有执行任何过滤:
........
p = &spamd_buffer[spamd_report_offset];
.......
便用作了缓冲区索引,因此大于32600的int:
... uschar spamd_buffer[32600];...
就会导致指针p跳出所分配的缓冲区,指向栈中的其他内存区域,可能出现分段错误或栈破坏,具体取决于栈结构。
<*来源:calcite (
calcite@setec.org)
链接:
http://marc.info/?l=bugtraq&m=117915689826317&w=2
*>
建议:
厂商补丁:
University of Cambridge
-----------------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.exim.org浏览次数:2573
严重程度:0(网友投票)