|
Message-Id: <201205241918.14998.sgrubb@redhat.com> Date: Thu, 24 May 2012 19:18:14 -0400 From: Steve Grubb <sgrubb@...hat.com> To: oss-security@...ts.openwall.com Subject: Re: CVE Request: powerdns does not clear supplementary groups On Thursday, May 24, 2012 06:56:46 PM Solar Designer wrote: > On Thu, May 24, 2012 at 06:15:53PM -0400, Steve Grubb wrote: > > Here is a real life case: > > > > + if ( initgroups(pw->pw_name, NULL) != 0 || setgid(pw->pw_gid) != 0 || > > + setuid(pw->pw_uid) != 0 ) > > > > This is not upstream. This is a patch to drop capabilities by changing > > uid/gid. The person writing the patch intended to do the right thing - > > but failed. See the bug? This is in a network facing daemon that parses > > untrusted network packets. > > Wow. The NULL results in group 0 being added to the supplementary > groups list (so it survives the setgid(), at least on my quick test). Yes. If you put that one snippet of code into google, you would find arpwatch is the culprit. > How did you spot this? Compiler warning? > > "passing arg 2 of `initgroups' makes integer from pointer without a cast" It was more of an empirical thing. I had a script that started all daemons and it walked the proc tree. If any uid != 0, it would check to see if there were any supplemental groups. Arpwatch had different supplemental groups than everything else that did this wrong, so I looked at the code to see what was different and found this bug. -Steve
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.