Glossary
Plain-language definitions of the memory-safety, exploitation and mitigation terms used across the guides.
- AddressSanitizer (ASan)
- A compiler instrumentation and runtime that detects out-of-bounds accesses, use-after-free and double free at the exact faulting instruction.
- ASLR
- Address Space Layout Randomization: the operating system places the stack, heap, libraries and executable at random addresses on each run.
- Branch target identification (BTI)
- An ARMv8.5 feature that forces indirect branches to land on a bti landing-pad instruction, invalidating mid-function gadgets on the forward edge.
- Control Flow Guard (CFG)
- A Windows forward-edge mitigation that checks every indirect call against a bitmap of valid targets, blocking jumps into the middle of functions or into data.
- Control-flow integrity (CFI)
- A family of mitigations that check at runtime that indirect calls, jumps and returns go only to targets the program could legitimately reach.
- Double free
- Freeing the same heap allocation twice, which corrupts allocator free lists and can lead to memory corruption (CWE-415).
- File-structure attacks (FSOP)
- Corrupting a glibc FILE object so a normal stdio call dispatches through an attacker-controlled vtable pointer into chosen code.
- Format-string vulnerability
- A bug where untrusted input is passed as the format argument of printf-style functions, letting it read or write memory through conversion specifiers (CWE-134).
- Fuzzing
- Automated testing that feeds a program large numbers of generated inputs to find crashes; coverage-guided fuzzers evolve inputs that reach new code.
- Global Offset Table (GOT)
- The table of resolved runtime addresses for imported functions; writable under lazy binding, which makes it a target for redirecting calls.
- Integer overflow
- An arithmetic result that exceeds the range of its integer type and wraps or triggers undefined behaviour, often producing undersized buffers (CWE-190).
- KASLR (kernel ASLR)
- Kernel Address Space Layout Randomization loads the kernel image at a random base each boot, so kernel function and gadget addresses are unknown to an attacker.
- KPTI (kernel page-table isolation)
- A Linux mitigation that gives user and kernel modes separate page tables, unmapping the kernel while userspace runs; introduced to mitigate Meltdown.
- Link register (x30 / lr)
- The AArch64 register that holds the return address; bl writes it and ret branches to it, so the return address is not on the stack by default.
- Memory safety
- The property that a program only accesses memory within the bounds and lifetime of valid objects, ruling out overflows, use-after-free and double free.
- NX bit (DEP)
- A page-level permission that marks memory as non-executable, so data written to the stack or heap cannot run as code. Known as DEP on Windows.
- PIE (position-independent executable)
- An executable compiled so it can run at any address, letting ASLR randomize the program's own code and data, not only its libraries.
- Pointer authentication (PAC)
- An ARMv8.3 feature that signs pointers with a secret key so a tampered pointer, such as an overwritten return address, fails authentication and faults.
- RELRO
- Relocation Read-Only: a linker and loader feature that makes the GOT and other relocation data read-only after startup, so they cannot be overwritten.
- Return-oriented programming (ROP)
- A code-reuse technique that chains short existing instruction sequences ending in return instructions, used to work around non-executable memory.
- Return-to-libc (ret2libc)
- A code-reuse attack that redirects execution into an existing C library function, such as system(), instead of injecting new code.
- Shadow stack
- A separate, protected stack that stores only return addresses, so a return is allowed only if it matches the address saved at call time.
- Sigreturn-oriented programming (SROP)
- A code-reuse technique that forges a signal frame so the sigreturn syscall restores every CPU register from attacker-controlled data at once.
- SMEP and SMAP
- CPU features that stop the kernel from executing (SMEP) or accessing (SMAP) user-space memory, breaking the classic ret2usr kernel-exploitation technique.
- Stack canary
- A secret value placed between a function's local buffers and its saved return data, checked before the function returns to detect stack buffer overflows.
- Structured Exception Handling (SEH)
- Windows' exception-handling mechanism; on 32-bit x86 it is a linked list of handler records on the stack, which a stack overflow can overwrite to hijack control.
- tcache (thread cache)
- A per-thread cache of freed heap chunks in glibc 2.26+ that speeds small allocations, and a common target of heap-exploitation techniques.
- Use-after-free
- A memory-safety bug where a program keeps using a pointer after the memory it points to has been freed, often leading to type confusion (CWE-416).