Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 075

ASLR

ПроверилCybersecurity entrepreneur & security researcher

Что такое ASLR?

ASLRASLR рандомизирует расположение в памяти кода, стеков, куч и библиотек, чтобы атакующие не могли надёжно предсказать целевые адреса для эксплойтов.


ASLR — это защитная мера, которая при каждом запуске программы рандомизирует базовые адреса ключевых областей процесса: исполняемого файла, разделяемых библиотек, кучи, стека и области mmap. Технику впервые реализовал проект PaX в 2001 году, в 2005 году её включили в основную ветку ядра Linux (2.6.12), а сегодня она поставляется в Windows (начиная с Vista), macOS, iOS и Android. Делая раскладку памяти непредсказуемой, ASLR вынуждает атакующего сначала получить утечку адреса, прежде чем проводить атаки повторного использования кода, такие как ROP или ret2libc.

Её стойкость зависит от энтропии: 32-битные системы дают лишь около 8–16 бит — настолько мало, что в исследовании Shacham 2004 года удалось методом перебора взломать порождённые через fork рабочие процессы Apache за считанные минуты, тогда как 64-битный Linux предлагает более 28 бит энтропии mmap. Полнота охвата важна ничуть не меньше: одна библиотека без PIE или бинарник, запущенный с неограниченным стеком (ADDR_NO_RANDOMIZE, усилено через CVE-2016-3672), оставляют фиксированную опорную точку. В 2014 году атака offset2lib авторства Marco-Gisbert и Ripoll показала, что GNU/Linux размещал PIE-исполняемый файл вплотную к его библиотекам, поэтому единственный утёкший адрес приложения де-рандомизировал каждую библиотеку с постоянным смещением, преодолевая полноценный ASLR, NX и стек-канарейки менее чем за секунду. Исправление отделило базу исполняемого файла от mmap_base.

ASLR никогда не работает в одиночку: сочетайте его с DEP/NX, стек-канарейками и контролем целостности потока управления (CFI) и помните, что любой надёжный примитив утечки информации полностью его обрушивает.

flowchart TD
  E[exec / загрузка программы] --> R{ASLR включён?}
  R -->|No| F[Фиксированные предсказуемые адреса]
  R -->|Yes| RND[Рандомизировать базу стека, кучи, mmap, PIE, библиотек]
  RND --> ENT{Достаточно энтропии и полный охват?}
  ENT -->|No| BF[Перебор / опора без PIE]
  ENT -->|Yes| LEAK{У атакующего есть утечка информации?}
  LEAK -->|Yes| BYP[Пересчитать реальные адреса напр offset2lib]
  LEAK -->|No| BLOCK[ROP / ret2libc ненадёжны]
  F --> EXP[Эксплойт удаётся]
  BF --> EXP
  BYP --> EXP

Примеры

  1. 01

    Linux рандомизирует базы стека, кучи и PIE-бинарника при каждом exec.

  2. 02

    ASLR в Windows переразмещает kernel32.dll и ntdll.dll при каждой загрузке.

Частые вопросы

Что такое ASLR?

ASLR рандомизирует расположение в памяти кода, стеков, куч и библиотек, чтобы атакующие не могли надёжно предсказать целевые адреса для эксплойтов. Относится к категории Безопасность приложений в кибербезопасности.

Что означает ASLR?

ASLR рандомизирует расположение в памяти кода, стеков, куч и библиотек, чтобы атакующие не могли надёжно предсказать целевые адреса для эксплойтов.

Как защититься от ASLR?

Защита от ASLR обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия ASLR?

Распространённые альтернативные названия: Рандомизация адресного пространства, PIE.

Связанные термины

См. также