• E
    exec: Move would_dump into flush_old_exec · 1a3d8645
    Eric W. Biederman 提交于
    stable inclusion
    from linux-4.19.124
    commit bfdb18282b6ff1374b4c1a0869fe7ad831fc0aef
    
    --------------------------------
    
    commit f87d1c95 upstream.
    
    I goofed when I added mm->user_ns support to would_dump.  I missed the
    fact that in the case of binfmt_loader, binfmt_em86, binfmt_misc, and
    binfmt_script bprm->file is reassigned.  Which made the move of
    would_dump from setup_new_exec to __do_execve_file before exec_binprm
    incorrect as it can result in would_dump running on the script instead
    of the interpreter of the script.
    
    The net result is that the code stopped making unreadable interpreters
    undumpable.  Which allows them to be ptraced and written to disk
    without special permissions.  Oops.
    
    The move was necessary because the call in set_new_exec was after
    bprm->mm was no longer valid.
    
    To correct this mistake move the misplaced would_dump from
    __do_execve_file into flos_old_exec, before exec_mmap is called.
    
    I tested and confirmed that without this fix I can attach with gdb to
    a script with an unreadable interpreter, and with this fix I can not.
    
    Cc: stable@vger.kernel.org
    Fixes: f84df2a6 ("exec: Ensure mm->user_ns contains the execed files")
    Signed-off-by: N"Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
    1a3d8645
exec.c 47.1 KB