ASLR
Was ist ASLR?
ASLRAddress Space Layout Randomization randomisiert die Speicherorte von Code, Stacks, Heaps und Bibliotheken, sodass Angreifer die Zieladressen fuer Exploits nicht zuverlaessig vorhersagen koennen.
ASLR ist eine defensive Massnahme, die bei jedem Programmstart die Basisadressen der wichtigsten Prozessbereiche – Executable, geteilte Bibliotheken, Heap, Stack und mmap-Bereich – zufaellig setzt. Sie wurde 2001 vom PaX-Projekt eingefuehrt, 2005 in den Mainline-Linux-Kernel (2.6.12) integriert und ist heute in Windows (seit Vista), macOS, iOS und Android enthalten. Indem ASLR das Speicherlayout unvorhersehbar macht, zwingt es einen Angreifer, zuerst eine Adresse zu leaken, bevor er Code-Reuse-Angriffe wie ROP oder ret2libc durchfuehren kann.
Seine Staerke haengt von der Entropie ab: 32-Bit-Systeme bieten nur ~8–16 Bit, so wenig, dass Shachams Studie von 2004 die geforkten Apache-Worker in Minuten per Brute Force knacken konnte, waehrend 64-Bit-Linux ueber 28 Bit mmap-Entropie liefert. Die Abdeckung ist ebenso wichtig – eine einzige Nicht-PIE-Bibliothek oder ein mit unbegrenztem Stack ausgefuehrtes Binary (ADDR_NO_RANDOMIZE, gehaertet ueber CVE-2016-3672) hinterlaesst einen festen Ankerpunkt. 2014 zeigte der offset2lib-Angriff von Marco-Gisbert und Ripoll, dass GNU/Linux das PIE-Executable direkt neben seine Bibliotheken mappte, sodass eine einzige geleakte Anwendungsadresse jede Bibliothek mit konstantem Offset ent-randomisierte – und so vollstaendiges ASLR, NX und Stack Canaries in unter einer Sekunde aushebelte. Der Fix trennte die Executable-Basis von mmap_base.
ASLR steht nie fuer sich allein: Kombinieren Sie es mit DEP/NX, Stack Canaries und Control-Flow Integrity (CFI), und denken Sie daran, dass jede zuverlaessige Info-Leak-Primitive es vollstaendig zum Einsturz bringt.
flowchart TD
E[exec / Programm laden] --> R{ASLR aktiviert?}
R -->|No| F[Feste, vorhersehbare Adressen]
R -->|Yes| RND[Basis von Stack, Heap, mmap, PIE, Bibliotheken randomisieren]
RND --> ENT{Genug Entropie und volle Abdeckung?}
ENT -->|No| BF[Brute Force / Nicht-PIE-Anker]
ENT -->|Yes| LEAK{Hat der Angreifer ein Info-Leak?}
LEAK -->|Yes| BYP[Echte Adressen neu berechnen z. B. offset2lib]
LEAK -->|No| BLOCK[ROP / ret2libc unzuverlaessig]
F --> EXP[Exploit gelingt]
BF --> EXP
BYP --> EXP● Beispiele
- 01
Linux randomisiert bei jedem exec Stack, Heap und die PIE-Binary-Basis.
- 02
Windows-ASLR verschiebt kernel32.dll und ntdll.dll bei jedem Boot.
● Häufige Fragen
Was ist ASLR?
Address Space Layout Randomization randomisiert die Speicherorte von Code, Stacks, Heaps und Bibliotheken, sodass Angreifer die Zieladressen fuer Exploits nicht zuverlaessig vorhersagen koennen. Es gehört zur Kategorie Anwendungssicherheit der Cybersicherheit.
Was bedeutet ASLR?
Address Space Layout Randomization randomisiert die Speicherorte von Code, Stacks, Heaps und Bibliotheken, sodass Angreifer die Zieladressen fuer Exploits nicht zuverlaessig vorhersagen koennen.
Wie schützt man sich gegen ASLR?
Schutzmaßnahmen gegen ASLR kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für ASLR?
Übliche alternative Bezeichnungen: Speicheradressen-Randomisierung, PIE.