ASLR "Address Space Layout Randomization" ist eine grundlegende Sicherheitsfunktion von Betriebssystemen, die Speicherbeschädigungs-Angriffe (wie Buffer Overflows) erschwert. 

  • ASLR ordnet Speicherbereiche für Programmcode, Stack und Heap bei jedem Start zufällig an, sodass Angreifer die genauen Speicheradressen von Schadcode oder Systemfunktionen nicht zuverlässig vorhersagen können. 
  • Im Gegensatz zu traditionellen Systemen, bei denen Systembibliotheken und ausführbare Dateien immer an denselben festen Adressen im Arbeitsspeicher geladen werden, sorgt ASLR für Dynamik.
  • Bei jedem Programmstart werden die kritischen Segmente (Stack, Heap, Bibliotheken) neu verteilt; so entstehen zufällige Speicheradressen für die Programmausführung.
  • Wenn Angreifer versuchen, einen Pufferüberlauf auszunutzen, müssen sie die exakte Adresse von Code-Segmenten kennen, um ihre Befehle auszuführen. 
  • Dies ist nur schwerlich möglich, weil sich die Adressen ständig ändern und dadurch Angriffe ins Leere laufen oder das System sogar zum Absturz bringen.
  • Moderne Betriebssysteme haben ASLR standardmäßig aktiviert. Seit Einführung von Windows Vista, wird ASLR auch systemseitig als mitigierende Sicherheitsmaßnahme genutzt.
  • Absolute Sicherheit gibt es damit jedoch nicht. Mit Heap-Spraying existiert eine Angriffstechnik, die die Erfolgswahrscheinlichkeit des Angriffs trotz der Nutzung von ASLR erhöhen kann.