diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2020-05-16 14:02:54 +0300 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2020-05-21 18:16:57 +0300 |
commit | a16b3357b2b8e910bb614254d8a7e84d2bd59b4c (patch) | |
tree | d0a003e8cc8555bb5c87f38bc0a64addd21dd176 /include/linux/binfmts.h | |
parent | 112b7147592e8f46bd1da4f961773e6d974f38a8 (diff) | |
download | linux-a16b3357b2b8e910bb614254d8a7e84d2bd59b4c.tar.xz |
exec: Allow load_misc_binary to call prepare_binprm unconditionally
Add a flag preserve_creds that binfmt_misc can set to prevent
credentials from being updated. This allows binfmt_misc to always
call prepare_binprm. Allowing the credential computation logic to be
consolidated.
Not replacing the credentials with the interpreters credentials is
safe because because an open file descriptor to the executable is
passed to the interpreter. As the interpreter does not need to
reopen the executable it is guaranteed to see the same file that
exec sees.
Ref: c407c033de84 ("[PATCH] binfmt_misc: improve calculation of interpreter's credentials")
Link: https://lkml.kernel.org/r/87imgszrwo.fsf_-_@x220.int.ebiederm.org
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Diffstat (limited to 'include/linux/binfmts.h')
-rw-r--r-- | include/linux/binfmts.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index 8605ab4a0f89..dbb5614d62a2 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h @@ -26,6 +26,8 @@ struct linux_binprm { unsigned long p; /* current top of mem */ unsigned long argmin; /* rlimit marker for copy_strings() */ unsigned int + /* It is safe to use the creds of a script (see binfmt_misc) */ + preserve_creds:1, /* * True if most recent call to security_bprm_set_creds * resulted in elevated privileges. |