Non-executable stack

Dag-Erling Smørgrav des at des.no
Wed Nov 2 04:30:59 PST 2005


db <db at traceroute.dk> writes:
> Memory on ia32 can be writable and readable.  When it is readable it
> is also executable.  On other arch's like AMD64 and IA64, I believe
> memory can be readable, writable and executable.

Not quite.  IA32 can make individual segments readable, writable and /
or executable, but lacks the ability to do so on a per-page basis.
Since we have trampoline code at the top of the stack, the entire
stack segment must be executable.  Moving the trampoline off the stack
would solve the problem on all platforms.

W^X across the board is not an option - it would break HotSpot and
other JIT-based software.

DES
-- 
Dag-Erling Smørgrav - des at des.no



More information about the freebsd-security mailing list