Other meanings of Address space layout randomization
Cybersecurity
Address space layout randomization (ASLR) is an operating-system security technique that randomizes memory addresses to hinder exploitation. By changing the locations of executable code, libraries, stacks, heaps, and other regions, it makes memory-corruption attacks less predictable and reduces the reliability of reused-address techniques such as return-oriented programming.1 ASLR is a probabilistic defense rather than a complete memory-safety mechanism: information leaks, weak randomness, predictable regions, or non-randomized modules can substantially reduce its protection.
ASLR protects processes by placing important memory regions at variable virtual addresses instead of fixed locations. The operating system may randomize the executable image, shared libraries, stack, heap, memory mappings, and related structures each time a process starts. An exploit that depends on a known library function or gadget address must therefore guess the current arrangement or obtain an address disclosure first.
ASLR is most valuable against memory-corruption vulnerabilities, including some stack-based and heap-based overflows. It complements, rather than replaces, controls such as non-executable memory, stack canaries, control-flow integrity, and bounds-checked or memory-safe programming. A vulnerability can remain present even when ASLR prevents one particular exploit from working.
Operating systems implement ASLR through randomized process mappings and cooperation from executable formats, loaders, and compilers. On Linux, the randomize_va_space setting controls the degree of randomization, including the treatment of the stack, shared libraries, memory mappings, and the position of the program break.1 Windows provides ASLR through executable and module-generation options, including mechanisms that require images to be built with relocation information.
Randomization is constrained by alignment, reserved address ranges, compatibility requirements, and the size of the process address space. Position-independent executables and position-independent code allow an executable or library to operate correctly after being loaded at a variable address. On 64-bit systems, the larger virtual address space usually provides a stronger entropy budget than on 32-bit systems.
ASLR raises the cost and uncertainty of exploitation, but its strength depends on entropy and on the absence of information leaks. If an attacker can disclose a pointer into a randomized module, the relative locations of other objects may become useful, particularly when they share a known image or predictable offset. Brute-force attacks may also succeed against repeatedly restarted services, especially when the available entropy is small.
Legacy binaries, modules without relocation support, and configurations that disable or weaken randomization can leave fixed targets in an otherwise randomized process. The defense is also less decisive against vulnerabilities that do not require precise addresses. Consequently, security guidance treats ASLR as layered mitigation: it should be combined with executable-space protections, robust compiler hardening, least privilege, patching, and prevention of address disclosures.
ASLR randomizes a layout, not the contents or permissions of memory. A process can therefore have randomized addresses while still containing a separately exploitable flaw, and randomization does not by itself make writable memory non-executable. Its benefit also varies by object: randomizing a shared library may disrupt a classic return-to-library attack, while a non-randomized main executable can still supply stable code addresses.
Entropy is affected by page alignment, architecture, operating-system policy, process type, and restart behavior. Research on practical attacks has shown that partial pointer disclosures and repeated attempts can erode probabilistic defenses. ASLR is consequently best understood as an exploit-reliability reducer. Its most durable role is as one layer in defense-in-depth, alongside control-flow protections and programming practices that prevent memory corruption in the first place.2
ASLR improves exploit resistance through uncertainty; it does not remove the underlying vulnerability or guarantee that an exploit cannot succeed.
Help improve the encyclopedia. Reports go straight to the site manager.