On Sun, 2008-05-18 at 12:45 +0200, Matthias Andree wrote: > On Sun, 18 May 2008, Timo Sirainen wrote: > > > > passdb vpopmail { > > > #args = > > > } > > > > vpopmail would be one possibility, I have some doubts about its > > security. > > Can you detail the spots you deem could take some more observation or > investigation?
I haven't looked at its code for several years now, but when I was implementing support for it the code didn't look all that secure. For example I had to add a workaround to Dovecot to make it work at all, because parse_email() didn't correctly NUL-terminate the output string: /* vpop_user must be zero-filled or parse_email() leaves an extra character after the user name. we'll fill vpop_domain as well just to be sure... */ memset(vpop_user, '\0', VPOPMAIL_LIMIT); memset(vpop_domain, '\0', VPOPMAIL_LIMIT); if (parse_email(request->user, vpop_user, vpop_domain, VPOPMAIL_LIMIT-1) < 0) { Also a quick look at its sources again shows that it uses strncpy() and strncat() wrong pretty much everywhere. Especially the strncat() calls are no better at protecting against buffer overflows than strcat().. But I don't know if any of these are actually exploitable. Probably not.
signature.asc
Description: This is a digitally signed message part