Messages in this thread | | | Subject | Re: [PATCH] MIPS: Prevent READ_IMPLIES_EXEC propagation | From | Tiezhu Yang <> | Date | Wed, 8 Jul 2020 15:51:24 +0800 |
| |
On 07/08/2020 03:45 AM, Maciej W. Rozycki wrote: > On Tue, 7 Jul 2020, Tiezhu Yang wrote: > >> In the MIPS architecture, we should clear the security-relevant >> flag READ_IMPLIES_EXEC in the function SET_PERSONALITY2() of the >> file arch/mips/include/asm/elf.h. >> >> Otherwise, with this flag set, PROT_READ implies PROT_EXEC for >> mmap to make memory executable that is not safe, because this >> condition allows an attacker to simply jump to and execute bytes >> that are considered to be just data [1]. > Why isn't the arrangement made with `mips_elf_read_implies_exec' > sufficient?
We inherit the READ_IMPLIES_EXEC personality flag across fork(). If we do not explicitly clear this flag in SET_PERSONALITY2(), PROT_READ implies PROT_EXEC for mmap to make memory executable even if used with the GCC option "-z noexecstack" when compile.
By the way, we can see some other reasons in the following commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48f99c8ec0b2
> > Maciej
| |