setuid/setgid/setgroups return values not checked
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
lighttpd (Ubuntu) |
Expired
|
Undecided
|
Unassigned |
Bug Description
Description
-------------
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.
Patch
-------
See http://
Fixed in
----------
1.4.x: http://
1.4.34: not released yet (http://
Solutions or workaround
-------
Make sure setuid(
* 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.
References
------------
[1] http://
[2] http://
[3] http://
[4] http://
Related branches
CVE References
information type: | Private Security → Public Security |
Thanks for taking the time to report this bug and helping to make Ubuntu better. Since the package referred to in this bug is in universe or multiverse, it is community maintained. If you are able, I suggest coordinating with upstream and posting a debdiff for this issue. When a debdiff is available, members of the security team will review it and publish the package. See the following link for more information: https:/ /wiki.ubuntu. com/SecurityTea m/UpdateProcedu res