RFR (S) JDK-7107135 - Stack guard pages becomes writable
Ioi Lam
ioi.lam at oracle.com
Wed Feb 20 10:52:40 PST 2013
> On 02/20/2013 08:25 AM, Dean Long wrote:
>> Which part seems buggy, changing the permissions? It seems necessary
>> as long as executable stacks is
>> a supported feature. It would be nice if dlopen() would just fail to
>> load these libraries based on some flag
>> in the executable's ELF file. I think the existing flag means "no
>> executable stacks used by this module",
>> but "no executable stacks used by this process" would make more sense
>> for Java.
>>
I found that it's possible to forbid dlopen() from loading shared
libraries that requires executable stacks. This can be done by calling
munmap() on the Java stack guard. Later, when dlopen calls mprotect to
make the stack RWX, the mprotect() system call will fail with an "memory
unavailable" error. As a result, dlopen would abort the loading.
I plan to make this as a separate commit with a new bug report. This
feature would be controlled by a run-time switch like
-XX:+ForbidLinuxExecStackDll. I really want to make this TRUE by
default, for "security out of the box", but there is worry about
backwards-compatibility for some customers that may depend on such old Dlls.
- Ioi
More information about the hotspot-runtime-dev
mailing list