Glossary
ASLR
Address Space Layout Randomization: the operating system places the stack, heap, libraries and executable at random addresses on each run.
Address Space Layout Randomization (ASLR) makes the location of a process's memory regions unpredictable. The stack, heap, memory-mapped region, shared libraries and, for position-independent executables, the program itself are loaded at randomized base addresses each time the program starts. Memory-corruption attacks that depend on knowing where code or data lives then fail or need an additional information leak.
On Linux, kernel.randomize_va_space=2 enables full randomization and is the default. Its main weaknesses are information disclosure bugs, which can reveal a module's base, and forking servers that share one layout across requests. It is most effective combined with PIE. See process memory layout.