Date: Wed, 30 Nov 2011 17:16:39 -0800 From: Xin LI <delphij@delphij.net> To: Mike Tancsa <mike@sentex.net> Cc: "freebsd-security@freebsd.org" <freebsd-security@freebsd.org>, d@delphij.net, Przemyslaw Frasunek <przemyslaw@frasunek.com> Subject: Re: ftpd security issue ? Message-ID: <4ED6D577.9010007@delphij.net> In-Reply-To: <4ED6D1CD.9080700@sentex.net> References: <4ED68B4D.4020004@sentex.net> <4ED69B7E.50505@frasunek.com> <4ED6C3C6.5030402@delphij.net> <4ED6D1CD.9080700@sentex.net>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------050602040905040808070901 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 11/30/11 17:01, Mike Tancsa wrote: > On 11/30/2011 7:01 PM, Xin LI wrote: >> >>> BTW. This vulnerability affects only configurations, where >>> /etc/ftpchroot exists or anonymous user is allowed to create >>> files inside etc and lib dirs. >> >> This doesn't seem to be typical configuration or no? > > I think in shared hosting environments it would be somewhat common. > For annon ftp, I dont think the anon user would be able to create / > write to a lib directory. > >> >> Will the attached patch fix the problem? >> >> (I think libc should just refuse /etc/nsswitch.conf and libraries >> if they are writable by others by the way) > > It does not seem to prevent the issue for me. Using Przemyslaw > program's, Sorry I patched at the wrong place, this one should do. Note however this is not sufficient to fix the problem, for instance one can still upload .so's that run arbitrary code at his privilege, which has to be addressed in libc. I need some time to play around with libc to really fix this one. Cheers, - -- Xin LI <delphij@delphij.net> https://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.18 (FreeBSD) iQEcBAEBCAAGBQJO1tV2AAoJEATO+BI/yjfBua8IAIt5FYjnMswOL/GPwcEaJaAJ reZxS5a1jBtqMOO1RhAlvDK9SVTYhWVOwQLUWmJz7iln+NissW9fQeYyG6bmfRxX l583Aiobk1Lgp+HRJQIEj2JjajoZkj7RjUrYa4a8lZQxNmVUXE/RqRgM2/FbuU4C ejQd5xRQdG+kMq9vUmYk4QP7ql32uv48sSTwklau6Jz5zMpXSvvx2awe8aZImB2R pWklWcT4VUSiEbrREvP/ZNJt+BjQAZw3V2Lc0j7c9AbLnj84KRgmUS+dTMTdPoyD nRavZQzppvxRf3tVrth5FuSsIdR5491Sa3ykzFpNKToqY4CtkRvAofZfBx0mQws= =9B6u -----END PGP SIGNATURE----- --------------050602040905040808070901 Content-Type: text/plain; name="popen.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="popen.diff" Index: libexec/ftpd/popen.c =================================================================== --- libexec/ftpd/popen.c (revision 228164) +++ libexec/ftpd/popen.c (working copy) @@ -143,6 +143,9 @@ } (void)close(pdes[1]); } + /* Drop privileges before proceeding */ + if (getuid() != geteuid() && setuid(geteuid()) < 0) + _exit(1); if (strcmp(gargv[0], _PATH_LS) == 0) { /* Reset getopt for ls_main() */ optreset = optind = optopt = 1; --------------050602040905040808070901--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4ED6D577.9010007>