COMMAND
IMP
SYSTEMS AFFECTED
Any supported by IMP, MSWordView
PROBLEM
Jose Nazario found following. IMP is a PHP3 driven webmail
solution providing full featured access to email. MSWordView is
an application that translates MicroSoft Word documents into HTML.
Used in conjunction users can view their Word document attachments
online without having to download them.
Two problems have been found in this setup, though, that warrant
attention. The first problem is the permissions left on the
temporary file used by MSWordView to format the document in HTML.
They are left world readable, possibly exposing private
information to the world:
/tmp:
-rw-r--r-- 1 nobody nogroup 13722 Mar 8 17:28 imp.word.2000-Mar-Wed_17:27:47__a986f65efecd5fd49e75b3d7f8312721.html
The second is a failure if the IMP process to clean up properly
if the MSWordView process does not exit correctly. It leaves
files on the server which will fill up the /tmp filesystem.
Should enough accumulate, a denial of service is possible due to
a lack of disk space. This improper exit can occur should the
user stop the attachment viewing before completion or if there is
a problem in the setup. Exploiting this is simply a matter of
sending one's self several large Word documents as attachments,
starting to load them in IMP to view them online and stopping the
loading. Disk space will deplete and the server will cease
operations soon enough.
Note that shell access is required to exploit this information
leak. Still, quite a number of servers exist in the world which
mix shell and webmail access, for which this would be a problem.
SOLUTION
The first problem has been fixed in the 2.2 beta versions of IMP.
As of version -pre11, released on 10 April, 2000, the umask is set
correctly as 077 and the files are no longer accessible by the
rest of the community. IMP administrators who are leary of using
beta software may wish to simply work around this problem in IMP
2.0.11. In the file imp/lib/mimetypes.lib there is the function
that is used by MSWordView which creates the temporary file.
Simple create a directory that is 700 for nobody.nogroup (or
whoever runs the web daemon process) and use that directory,
rather than /tmp, for temporary storage.
The second problem at this time has no fix, though a simple cron
job that removes temporary IMP files that are more than 30 minutes
should work or monitors IMP's temporary storage space and reacts
similarily. This time should be adjusted depending on the number
of users on the server and the size of the temporary space. An
account is required to abuse this problem.