lkml.org 
[lkml]   [2020]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 3/8] exec: Convert security_bprm_set_creds into security_bprm_repopulate_creds
    On Tue, May 19, 2020 at 02:03:23PM -0500, Eric W. Biederman wrote:
    > Kees Cook <keescook@chromium.org> writes:
    >
    > > On Mon, May 18, 2020 at 07:31:14PM -0500, Eric W. Biederman wrote:
    > >> [...]
    > >> diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
    > >> index d1217fcdedea..8605ab4a0f89 100644
    > >> --- a/include/linux/binfmts.h
    > >> +++ b/include/linux/binfmts.h
    > >> @@ -27,10 +27,10 @@ struct linux_binprm {
    > >> unsigned long argmin; /* rlimit marker for copy_strings() */
    > >> unsigned int
    > >> /*
    > >> - * True if most recent call to cap_bprm_set_creds
    > >> + * True if most recent call to security_bprm_set_creds
    > >> * resulted in elevated privileges.
    > >> */
    > >> - cap_elevated:1,
    > >> + active_secureexec:1,
    > >
    > > Also, I'd like it if this comment could be made more verbose as well, for
    > > anyone trying to understand the binfmt execution flow for the first time.
    > > Perhaps:
    > >
    > > /*
    > > * Must be set True during the any call to
    > > * bprm_set_creds hook where the execution would
    > > * reuslt in elevated privileges. (The hook can be
    > > * called multiple times during nested interpreter
    > > * resolution across binfmt_script, binfmt_misc, etc).
    > > */
    > Well it is not during but after the call that it becomes true.
    > I think most recent covers the case of multiple calls.

    I'm thinking of an LSM writing reading these comments to decide what
    they need to do to the flags, so it's a direction to them to set it to
    true if they have determined that privilege was gained. (Though in
    theory, this is all moot since only the commoncap hook cares.)

    > I think having the loop explicitly in the code a few patches
    > later makes it clear that there is a loop dealing with interpreters.
    >
    > Conciseness has a virtue in that it is easy to absorb. Seeing
    > active says most recent and secureexec does not is enough to ask
    > questions and look at the code.

    I still think a hint about the nature of nested exec resolution would be
    nice in here somewhere, especially given that this value is zeroed
    before each call to the hook.

    --
    Kees Cook

    \
     
     \ /
      Last update: 2020-05-19 21:15    [W:4.163 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site