builtins.c in Xinetd before 2.3.15 does not check the service type when the tcpmux-server service is enabled, which exposes all enabled services and allows remote attackers to bypass intended access restrictions via a request to tcpmux port 1.
Created attachment 795808 [details] preliminary patch to set credentials before execve
Description of problem:
If a tcpmux service is enabled, the user and group directives are ignored and the service always runs as root. Verified in the xinetd codebase and affects all active versions of RHEL and Fedora. Without the fix for CVE-2012-0862, previously exposed non-tcpmux services could run as root bypassing their respective user and group restrictions.
Version-Release number of selected component (if applicable): 2.3.15-6
How reproducible: Always
Steps to Reproduce: 1. Enabled tcpmux-server 2. Create a sample tcpmux service
service testcred { id = tcpmux-testcred disable = no user = nobody group = nobody sockettype = stream type = TCPMUXPLUS UNLISTED flags = NAMEINARGS server = /usr/bin/id serverargs = id wait = no }
3. telnet localhost 1 4. type testcred
Actual results: Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. testcred +Go uid=0(root) gid=0(root) groups=0(root)
Expected results: Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. testcred +Go uid=99(nobody) gid=99(nobody) groups=99(nobody)
Additional info: