Executing data as code
When the CPU attempts to run bytes that are not intended to be instructions, often due to memory corruption or control-flow hijacking.
Definition
Executing data as code is when the CPU attempts to interpret arbitrary bytes as machine instructions.
This typically happens when control flow is corrupted and the instruction pointer jumps into memory that contains data rather than executable code.
Why it matters
This can be a symptom of:
- memory corruption (use-after-free, buffer overflow)
- a broken or mismatched binary for the current architecture
- an exploit attempt or security issue
At the application level it often shows up as a crash like SIGILL or SIGSEGV.