Re: [kernel-hardening] Re: [PATCH] move RLIMIT_NPROC check from set_user() to do_execve_common()

Stephen Smalley
2011-07-15T19:54:53Z

On Fri, 2011-07-15 at 19:26 +0400, Vasiliy Kulikov wrote:
> Hi Stephen,
>
> On Fri, Jul 15, 2011 at 09:58 -0400, Stephen Smalley wrote:
> > Does this have implications for Android's zygote model? There you have
> > a long running uid 0 / all caps process (the zygote), which forks itself
> > upon receiving a request to spawn an app and then calls
>
> > setgroups();
> > setrlimit(); setgid(); setuid();
>
> Is RLIMIT_NPROC forced in your model and setuid() is expected to fail
> because of NPROC exceeding? If no, then it is not touched at all.

I don't know what their intent is. But it is an example of a case where
moving the enforcement from setuid() to a subsequent execve() causes the
check to never get applied. As to whether or not they care, I don't
know. An app that calls fork() repeatedly will still be stopped, but an
app that repeatedly connects to the zygote and asks to spawn another
instance of itself would be unlimited.

OTOH, the current RLIMIT_NPROC check and lack of setuid() error checking
has been a repeated issue for Android.

--
Stephen Smalley
National Security Agency