Bug 1029663 - (CVE-2013-4559) CVE-2013-4559 lighttpd: setuid/setgid/setgroups return value check
CVE-2013-4559 lighttpd: setuid/setgid/setgroups return value check
Status: NEW
Product: Security Response
Classification: Other
Component: vulnerability (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Red Hat Product Security
: Security
Depends On: 1029666 1029667 1029669
  Show dependency treegraph
Reported: 2013-11-12 16:19 EST by Kurt Seifried
Modified: 2014-06-18 03:58 EDT (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed:
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Kurt Seifried 2013-11-12 16:19:41 EST
Stefan Bühler of the lighthttpd project reports:

 setuid/setgid/setgroups return values not checked


Privilege escalation from lighttpd user ("www-data").

This bug was found with the clang static analyzer.

 Attack scenario

In certain cases setuid() and similar can fail; if an environment limits 
the number of processes a user can have, setuid() might fail if the target 
uid already is at the limit.

A user who can execute processes with the same userid (for example by 
having write access to CGI scripts) could clone() often; in this case 
a lighttpd restart would end up with lighttpd running as root, and the 
CGI scripts would run as root too.

It could be possible that remote users could trigger many processes too, and 
trigger a restart using a different bug in lighttpd.

 Affected versions

All versions before 1.4.33.


See http://download.lighttpd.net/lighttpd/security/lighttpd-1.4.33_fix_setuid.patch

 Fixed in

1.4.x: http://redmine.lighttpd.net/projects/lighttpd/repository/revisions/2923
1.4.34: not released yet (http://www.lighttpd.net/)

 Solutions or workaround

Make sure setuid()/setgid()/... can never fail:
* don't have any limits, or
* disable mod_cgi (perhaps using fcgi-cgi [3] or scgi-cgi [4] as replacement), 
  and run any backends (FastCGI, SCGI, ...) with different users.
  Privilege separation is always a good idea!

Other restrictions could be in place (AppArmor/SELinux), but they usually 
either always work or never work.


[1] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-XXXX (TBD)
[2] http://redmine.lighttpd.net/projects/lighttpd/repository/revisions/2923/diff/
[3] http://redmine.lighttpd.net/projects/fcgi-cgi/wiki
[4] http://redmine.lighttpd.net/projects/scgi-cgi/wiki

 GPG signatures

* http://download.lighttpd.net/lighttpd/security/lighttpd-1.4.33_fix_setuid.patch.asc
* http://download.lighttpd.net/lighttpd/security/lighttpd_sa_2013_02.txt.asc
Comment 1 Kurt Seifried 2013-11-12 16:24:07 EST
Created lighttpd tracking bugs for this issue:

Affects: fedora-all [bug 1029666]
Comment 2 Kurt Seifried 2013-11-12 16:25:45 EST
Created lighttpd tracking bugs for this issue:

Affects: epel-all [bug 1029667]

Note You need to log in before you can comment on or make changes to this bug.