Updates:
        Status: New

Comment #9 on issue 2473 by [email protected]: http://www.chaostoperfection.com/ crashes in V8 initialization on 64-bit platforms
http://code.google.com/p/v8/issues/detail?id=2473

There are two different things at work here. Reserving an address space hole is reasonable if you need 32-bit relative addressing. The security team has already discussed that, and is planning on changing the way this limit is imposed (probably enforcing it in the allocator only for committed, contiguous pages). That said, for security reasons we absolutely need a restriction here because the vast majority of the codebase isn't yet guaranteed safe against 32-bit integer overflows on 64-bit architectures. So, this is the only thing preventing a very common buffer overflow pattern.

As for V8's code limit being silently increased to 512mb, I am a bit disturbed. V8's use of RWX pages for its emitted code has always been a major security liability. A few years ago we worked with the V8 team to arrive at a number of mitigations for that liability: JIT size limits, randomized allocation bases, constant masking, and guard pages. On 64-bit architectures the size limit should be 128mb, and we were told that the security team would be consulted before changing these limits in the future. I should also note that for the fast majority of sites (including everything in the top 100k) this limit was many times what they would ever encounter, but we kept it this high for a small minority of uncommon sites using legacy JSON libraries that triggered excessive JITing. (And for comparison, IE's JIT has a 16mb limit, and has other mitigations that make it better than ours on the security front.)

So, from the security perspective we have a serious regression here. Any thoughts on how to best move forward?

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to