Re: [patch] remove MNT_NOEXEC check for PROT_EXEC mmaps

From: Kyle Moffett
Date: Sun Sep 24 2006 - 15:44:19 EST


On Sep 24, 2006, at 15:14:02, David Wagner wrote:
Stas Sergeev wrote:
Ulrich Drepper wrote:
The consensus has been to add the same checks to mprotect. They were
not left out intentionally.

But how about the anonymous mmap with PROT_EXEC set?

I'm curious about this, too. ld-linux.so is a purely unprivileged
program. It isn't setuid root. Can you write a variant of ld- linux.so
that reads an executable into memory off of a partition mounted noexec and
then begins executing that code? (perhaps by using anonymous mmap with
PROT_EXEC or some other mechanism) It sure seems like the answer would
be yes. If so, I'm having a hard time understanding what guarantees
noexec gives you. Isn't the noexec flag just a speedbump that raises
the bar a little but doesn't really prevent anything?

I seem to recall somewhere that it was possible to prevent anonymous memory from being mapped PROT_EXEC during or after being mapped PROT_WRITE; and that in fact your average SELinux-enabled system had such protections for everything but the Java binary and a few other odd programs. If you can't ever execute any data blobs except those that came directly from a properly-secured SELinux-enabled filesystem it makes exploiting a server significantly harder.

Cheers,
Kyle Moffett

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/