Practice question · Multiple choice
A buffer overflow that overwrites a return address can make a program execute the attacker's code. Which architectural feature makes that possible?
Hints
- Ask what the return address physically is, and what kind of memory it lives in.
- Under a Harvard architecture with separate instruction memory, could data become code?
Show the answer
D. Instructions and data sharing one memory and one address space
Why
Stored-program design is what lets a program be loaded and compiled, and it is what lets data become an address to jump to. The whole class of attack follows from the von Neumann trade, which is why the defences are bolt-ons: non-executable stacks, address randomisation and stack canaries.
Practise The Instruction Execution Cycle
The app has 8 more questions on this lesson, and keeps your place in the course. Computer Science I is free to start.
More questions on The Instruction Execution Cycle
- A program executes ADD R1, R2 followed by JMP 200. Order what the CPU does, from the start of the first…
- A jump instruction sits at address 40 and jumps to address 80. Instructions are 4 bytes long. Order what…
- The program counter is incremented during the FETCH phase, before the instruction has even been decoded. Why…