Conversation

Giving the impression that you buy this new Intel processor and your problems are solved -- you don't get better than that coarse-grained forward edge check without significant static analysis and source code changes, something that was already done for the kernel in 2014 w/ RAP
1
4
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
Consider a Python application. If an attacker has arbitrary write, they can make the interpreter run their own bytecode. In that case, the bytecode is fully trusted. Even if a JavaScript interpreter doesn't directly trust the bytecode it generated, an attacker can mess with it.
1
4