安全研究
安全漏洞
UW-IMAP tmail及dmail本地栈溢出漏洞
发布日期:2008-11-03
更新日期:2008-11-07
受影响系统:
University of Washington imap 2002 - 2007c不受影响系统:
University of Washington imap 2007d描述:
BUGTRAQ ID: 32072
CVE(CAN) ID: CVE-2008-5005
UW-IMAP是Linux和UNIX系统的免费IMAP服务,捆绑于各种Linux版本中。
tmail和dmail都是UW-IMAP所使用的邮件传输代理,这两个应用没有对从命令行所传送的文件名扩展名参数执行边界检查,如果用户提交了超长的文件夹名称的话就可以触发栈溢出。
对于tmail,这个溢出可能导致以root用户权限执行任意代码;对于dmail,可能导致以收件人的权限执行任意代码。以下是存在漏洞的代码段:
[tmail.c]
char *getusername (char *s,char **t)
{
char tmp[MAILTMPLEN];
if (*t = strchr (s,'+')) { /* have a mailbox specifier? */
*(*t)++ = '\0'; /* yes, tie off user name */
/* user+ and user+INBOX same as user */
if (!**t || !strcmp ("INBOX",ucase (strcpy (tmp,*t)))) *t = NIL;
}
return s; /* return user name */
}
[dmail.c]
int deliver (FILE *f,unsigned long msglen,char *user)
{
MAILSTREAM *ds = NIL;
char *s,*mailbox,tmp[MAILTMPLEN],path[MAILTMPLEN];
STRING st;
struct stat sbuf;
/* have a mailbox specifier? */
if (mailbox = strchr (user,'+')) {
*mailbox++ = '\0'; /* yes, tie off user name */
if (!*mailbox || !strcmp ("INBOX",ucase (strcpy (tmp,mailbox))))
mailbox = NIL; /* user+ and user+INBOX same as user */
}
(..)
user+folder命令行参数分别通过s和user字符指针到达deliver()和getusername()。folder部分与user部分分离并拷贝到tmp缓冲区。由于该缓冲区位于栈上,超长的文件夹名称就可以导致覆盖栈上数据。
<*来源:Aron Andersson (aron.andersson@bitsec.com)
Jan Sahlin (jan.sahlin@bitsec.com)
链接:http://marc.info/?l=bugtraq&m=122573702401947&w=2
https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=469667
http://mailman2.u.washington.edu/pipermail/imap-uw/2008-October/002267.html
http://secunia.com/advisories/32483/
https://www.redhat.com/support/errata/RHSA-2009-0275.html
*>
建议:
厂商补丁:
RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2009:0275-01)以及相应补丁:
RHSA-2009:0275-01:Moderate: imap security update
链接:https://www.redhat.com/support/errata/RHSA-2009-0275.html
University of Washington
------------------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
ftp://ftp.cac.washington.edu/imap
浏览次数:2928
严重程度:0(网友投票)
绿盟科技给您安全的保障
