New function attribute __call_push_jmp__
David Brown
david@westcontrol.com
Mon Dec 2 12:47:51 GMT 2024
On 01/12/2024 23:55, Frederick Virchanza Gotham via Gcc wrote:
> Some modern CPU's now have control flow enforcement. Here's how it
> works on Intel CPU's:
>
> "The shadow stack stores a copy of the return address of each CALL. On
> a RET, the processor checks if the return address stored in the normal
> stack and shadow stack are equal. If the addresses are not equal, the
> processor generates an INT #21 (Control Flow Protection Fault)."
>
...
> This would allow us to get around the control-flow enforcement (such
> as when debugging, or when intercepting a function call).
>
You are asking for a feature to bypass a rather useful security feature
that otherwise eliminates a major class of hacking and malware attack
techniques. (I don't know how much the CET features are currently
supported in gcc - I don't normally use x86 targets.)
Why do you think it is at all relevant for debugging? Why do you think
"intercepting a function call" is a useful thing to do?
How would your suggestion differ from existing debug features or gcc
flags (like -flive-patching, -fpatchable-function-entry, -mno-shstk) ?
More information about the Gcc
mailing list