ASLR
Что такое ASLR?
ASLRASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
ASLR — это защитная мера, которая при каждом запуске процесса случайно выбирает базовые адреса ключевых областей: исполняемого файла, разделяемых библиотек, кучи, стека и mmap-региона. Технику впервые реализовал проект PaX в 2001 году, и сегодня она встроена в Linux, Windows, macOS, iOS и Android. Случайное расположение памяти вынуждает злоумышленника сначала получить утечку адреса, чтобы провести атаки повторного использования кода вроде ROP. Эффективность зависит от энтропии, полного охвата бинарных файлов (PIE) и сочетания с DEP/NX, стек-канарейками и CFI против частичных перезаписей и инфо-утечек.
● Примеры
- 01
Linux рандомизирует базы стека, кучи и PIE-бинарника при каждом exec.
- 02
Windows переразмещает kernel32.dll и ntdll.dll при каждой загрузке.
● Частые вопросы
Что такое ASLR?
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов. Относится к категории Безопасность приложений в кибербезопасности.
Что означает ASLR?
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
Как работает ASLR?
ASLR — это защитная мера, которая при каждом запуске процесса случайно выбирает базовые адреса ключевых областей: исполняемого файла, разделяемых библиотек, кучи, стека и mmap-региона. Технику впервые реализовал проект PaX в 2001 году, и сегодня она встроена в Linux, Windows, macOS, iOS и Android. Случайное расположение памяти вынуждает злоумышленника сначала получить утечку адреса, чтобы провести атаки повторного использования кода вроде ROP. Эффективность зависит от энтропии, полного охвата бинарных файлов (PIE) и сочетания с DEP/NX, стек-канарейками и CFI против частичных перезаписей и инфо-утечек.
Как защититься от ASLR?
Защита от ASLR обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия ASLR?
Распространённые альтернативные названия: Рандомизация адресного пространства, PIE.
● Связанные термины
- appsec№ 581
KASLR
KASLR (ASLR ядра) при каждой загрузке случайно сдвигает базу ядра и загружаемые модули, чтобы атакующий не мог использовать жёстко заданные адреса ядра для повышения привилегий.
- appsec№ 303
DEP
Предотвращение выполнения данных (DEP, NX или W^X) помечает страницы памяти как неисполняемые, чтобы атакующий не мог запустить шеллкод, внедрённый в стек или кучу.
- appsec№ 925
Возвратно-ориентированное программирование (ROP)
ROP — техника эксплуатации с повторным использованием кода, в которой короткие последовательности инструкций, оканчивающиеся RET, выстраиваются в цепочку для выполнения произвольных вычислений без внедрения нового кода.
- appsec№ 1095
Стек-канарейка
Стек-канарейка — это секретное значение между локальными буферами функции и сохранённым адресом возврата, позволяющее обнаружить переполнение стека до перехвата управления.
- appsec№ 217
Целостность потока управления
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
- appsec№ 670
Безопасность памяти
Безопасность памяти — свойство, при котором программа никогда не читает, не пишет и не исполняет память, которую она не выделяла легитимно, что устраняет целые классы уязвимостей.
● См. также
- № 471Heap Spraying
- № 469Heap Feng Shui
- № 569Jump-Oriented Programming (JOP)
- № 1028Теневой стек
- № 545Intel CET
- № 671Языки с безопасной памятью