|
Message-ID: <20110619133435.GA2670@albatros> Date: Sun, 19 Jun 2011 17:34:35 +0400 From: Vasiliy Kulikov <segoon@...nwall.com> To: kernel-hardening@...ts.openwall.com Subject: Re: rlimit_nproc check On Sun, Jun 12, 2011 at 06:28 +0400, Solar Designer wrote: > Right. Dealing with setuid() failing to drop privs yet returning, which > many apps don't expect, is definitely something we (you) need to do > under this project. In Linux 2.4.x-ow, I simply do: > > --- linux-2.4.37.9.orig/kernel/sys.c 2010-02-01 21:04:46 +0000 > +++ linux-2.4.37.9/kernel/sys.c 2010-02-18 14:04:42 +0000 > @@ -514,8 +514,10 @@ static int set_user(uid_t new_ruid, int > struct user_struct *new_user; > > new_user = alloc_uid(new_ruid); > - if (!new_user) > + if (!new_user) { > + force_sig(SIGSEGV, current); > return -EAGAIN; > + } > switch_uid(new_user); > > if(dumpclear) > > As an option, you could propose to revert that 8-year old change and > introduce the check on execve(). Unrealistic? I have slightly another idea. Introduce mechanism (e.g. sysctl variable) to make all capabilities dropping function cause SIGSEGV if actual dropping process fails for any of several reasons. The initial list should look like this: set*{u,g}id {set,init}groups unshare prctl(PR_CAPBSET_DROP, ...) prctl(PR_SET_SECCOMP, ...) capset But any such list looks a bit not complete because there are many different functions that might drop some capabilities in some situations, like close(), *chdir(), rlimit(), nice(), fcntl(), ioctl(), chroot(), which are, well, might fail in very common situations without any actual secuity risk. So, IMO this solution might not be enough consistent for upstream inclusion. Thanks, -- Vasiliy
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.