Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  • Eric W. Biederman's avatar
    exec: Add a per bprm->file version of per_clear · a7868323
    Eric W. Biederman authored
    There is a small bug in the code that recomputes parts of bprm->cred
    for every bprm->file.  The code never recomputes the part of
    clear_dangerous_personality_flags it is responsible for.
    
    Which means that in practice if someone creates a sgid script
    the interpreter will not be able to use any of:
    	READ_IMPLIES_EXEC
    	ADDR_NO_RANDOMIZE
    	ADDR_COMPAT_LAYOUT
    	MMAP_PAGE_ZERO.
    
    This accentially clearing of personality flags probably does
    not matter in practice because no one has complained
    but it does make the code more difficult to understand.
    
    Further remaining bug compatible prevents the recomputation from being
    removed and replaced by simply computing bprm->cred once from the
    final bprm->file.
    
    Making this change removes the last behavior difference between
    computing bprm->creds from the final file and recomputing
    bprm->cred several times.  Which allows this behavior change
    to be justified for it's own reasons, and for any but hunts
    looking into why the behavior changed to wind up here instead
    of in the code that will follow that computes bprm->cred
    from the final bprm->file.
    
    This small logic bug appears to have existed since the code
    started clearing dangerous personality bits.
    
    History Tree: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    
    
    Fixes: 1bb0fa189c6a ("[PATCH] NX: clean up legacy binary support")
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    a7868323