[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1397433615.18152.9.camel@shire>
Date: Sun, 13 Apr 2014 20:00:15 -0400
From: Peter Malone <peter@...ermalone.org>
To: fulldisclosure@...lists.org
Subject: [FD] Two Possible Vulnerabilities in courier-imapd?
Hi there,
Lets take a look at two functions in courier-imap 4.15. The first one is
emptytrash(), and the second one is store_mailbox().
void emptytrash()
{
char *dir, *all_settings, *next_folder, *folder, *p;
unsigned l;
all_settings=getenv("IMAP_EMPTYTRASH");
return;
all_settings=strdup(all_settings);
if (!all_settings)
return;
if (strchr(all_settings, ':') == 0 &&
strchr(all_settings, ',') == 0)
{
l=atoi(all_settings);
if (l <= 0)
l=1;
maildir_getnew(".", trash, NULL, NULL);
if ((dir=maildir_folderdir(".", trash)))
{
maildir_purge(dir, l * 24 * 60 * 60);
free(dir);
}
free(all_settings);
return;
}
for (folder=all_settings; folder && *folder; )
{
if (*folder == ',')
{
++folder;
continue;
}
next_folder=strchr(folder, ',');
if (next_folder)
*next_folder++=0;
p=strchr(folder, ':');
if (!p)
{
folder=next_folder;
continue;
}
*p++=0;
l=atoi(p);
if (l <= 0) l=1;
maildir_getnew(".", folder, NULL, NULL);
if ((dir=maildir_folderdir(".", folder)))
{
maildir_purge(dir, l * 24 * 60 * 60);
free(dir);
}
folder=next_folder;
}
free(all_settings);
}
The interesting parts of this function are
all_settings=getenv("IMAP_EMPTYTRASH");
free(all_settings);
Setting IMAP_EMPTYTRASH to something like "%s:%d%d%d%s%s%s" should cause
the application to crash.
Moving on to store_mailbox()... this function is too big to paste in
this mail, but if we focus on lines 744 - 757:
if (fflush(fp) || ferror(fp))
{
fprintf(stderr,
"ERR: error storing a message, user=%s, errno=%d
\n",
getenv("AUTHENTICATED"), errno);
fclose(fp);
unlink(tmpname);
writes(tag);
writes(nowrite);
free(tmpname);
free(newname);
return (-1);
}
I believe the above fprintf call is a format string vulnerability.
I'm going to continue to look into this, however in the meantime I
welcome your input regarding these two functions.
Regards,
Peter.
_______________________________________________
Sent through the Full Disclosure mailing list
http://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: http://seclists.org/fulldisclosure/
Powered by blists - more mailing lists