Conversation

When using out-of-process JIT (As in Edge), the JIT code is RO in JIT process. Thus, CFI hashes compared on fwd-edges and the compare itself are in RO mem. i.e. XFG/RAP fwd-edges still work. Same is true for RAP backward-edges (ret hashes and compares are in RO memory as-well).
1
Right. So can you elaborate why would attacker's arbitrary read/write break RAP's CFI? Shadow-stack should also always remain read-only. In RFG it was only hidden but still writable which lead it indeed to be not effective, but this isn't true for CET-like shadow-stack.
1
1
Now that Edge is based on Chromium, it also doesn't have that feature anymore. You can pass `--js-flags=--jitless` to Chromium (or Edge) to disable the JIT to only use the interpreter. It's compatible with ACG, PaX MPROTECT, SELinux !execmem, etc. Still, there's an interpreter...
1
3