DSA-2154-1 exim4 -- privilege escalation

Related Vulnerabilities: CVE-2010-4345   CVE-2011-0017  

A design flaw (CVE-2010-4345) in exim4 allowed the local Debian-exim user to obtain root privileges by specifying an alternate configuration file using the -C option or by using the macro override facility (-D option). Unfortunately, fixing this vulnerability is not possible without some changes in exim4's behaviour. If you use the -C or -D options or use the system filter facility, you should evaluate the changes carefully and adjust your configuration accordingly. The Debian default configuration is not affected by the changes. The detailed list of changes is described in the NEWS.Debian file in the packages. The relevant sections are also reproduced below. In addition to that, missing error handling for the setuid/setgid system calls allowed the Debian-exim user to cause root to append log data to arbitrary files (CVE-2011-0017). For the stable distribution (lenny), these problems have been fixed in version 4.69-9+lenny3. For the testing distribution (squeeze) and the unstable distribution (sid), these problem have been fixed in version 4.72-4. Excerpt from the NEWS.Debian file from the packages exim4-daemon-light and exim4-daemon-heavy: Exim versions up to and including 4.72 are vulnerable to CVE-2010-4345. This is a privilege escalation issue that allows the exim user to gain root privileges by specifying an alternate configuration file using the -C option. The macro override facility (-D) might also be misused for this purpose. In reaction to this security vulnerability upstream has made a number of user visible changes. This package includes these changes. If exim is invoked with the -C or -D option the daemon will not regain root privileges though re-execution. This is usually necessary for local delivery, though. Therefore it is generally not possible anymore to run an exim daemon with -D or -C options. However this version of exim has been built with TRUSTED_CONFIG_LIST=/etc/exim4/trusted_configs. TRUSTED_CONFIG_LIST defines a list of configuration files which are trusted; if a config file is owned by root and matches a pathname in the list, then it may be invoked by the Exim build-time user without Exim relinquishing root privileges. As a hotfix to not break existing installations of mailscanner we have also set WHITELIST_D_MACROS=OUTGOING. i.e. it is still possible to start exim with -DOUTGOING while being able to do local deliveries. If you previously were using -D switches you will need to change your setup to use a separate configuration file. The ".include" mechanism makes this easy. The system filter is run as exim_user instead of root by default. If your setup requies root privileges when running the system filter you will need to set the system_filter_user exim main configuration option.

Debian Security Advisory

DSA-2154-1 exim4 -- privilege escalation

Date Reported:
30 Jan 2011
Affected Packages:
exim4
Vulnerable:
Yes
Security database references:
In Mitre's CVE dictionary: CVE-2010-4345, CVE-2011-0017.
More information:

A design flaw (CVE-2010-4345) in exim4 allowed the local Debian-exim user to obtain root privileges by specifying an alternate configuration file using the -C option or by using the macro override facility (-D option). Unfortunately, fixing this vulnerability is not possible without some changes in exim4's behaviour. If you use the -C or -D options or use the system filter facility, you should evaluate the changes carefully and adjust your configuration accordingly. The Debian default configuration is not affected by the changes.

The detailed list of changes is described in the NEWS.Debian file in the packages. The relevant sections are also reproduced below.

In addition to that, missing error handling for the setuid/setgid system calls allowed the Debian-exim user to cause root to append log data to arbitrary files (CVE-2011-0017).

For the stable distribution (lenny), these problems have been fixed in version 4.69-9+lenny3.

For the testing distribution (squeeze) and the unstable distribution (sid), these problem have been fixed in version 4.72-4.

Excerpt from the NEWS.Debian file from the packages exim4-daemon-light and exim4-daemon-heavy:

Exim versions up to and including 4.72 are vulnerable to
CVE-2010-4345. This is a privilege escalation issue that allows the
exim user to gain root privileges by specifying an alternate
configuration file using the -C option. The macro override facility
(-D) might also be misused for this purpose.

In reaction to this security vulnerability upstream has made a number
of user visible changes. This package includes these changes.

If exim is invoked with the -C or -D option the daemon will not regain
root privileges though re-execution. This is usually necessary for
local delivery, though. Therefore it is generally not possible anymore
to run an exim daemon with -D or -C options.

However this version of exim has been built with
TRUSTED_CONFIG_LIST=/etc/exim4/trusted_configs. TRUSTED_CONFIG_LIST
defines a list of configuration files which are trusted; if a config
file is owned by root and matches a pathname in the list, then it may
be invoked by the Exim build-time user without Exim relinquishing root
privileges.

As a hotfix to not break existing installations of mailscanner we have
also set WHITELIST_D_MACROS=OUTGOING. i.e. it is still possible to
start exim with -DOUTGOING while being able to do local deliveries.

If you previously were using -D switches you will need to change your
setup to use a separate configuration file. The ".include" mechanism
makes this easy.

The system filter is run as exim_user instead of root by default.  If
your setup requies root privileges when running the system filter you
will need to set the system_filter_user exim main configuration
option.