DEP
Что такое DEP?
DEPПредотвращение выполнения данных (DEP, NX или W^X) помечает страницы памяти как неисполняемые, чтобы атакующий не мог запустить шеллкод, внедрённый в стек или кучу.
DEP, также называемая NX (No-eXecute) или W^X (write XOR execute), гарантирует, что страница памяти может быть либо записываемой, либо исполняемой, но не обеими одновременно. Бит NX в процессоре блокирует выборку инструкций со страниц данных — стека и кучи — и обесценивает классические атаки с инъекцией шеллкода. AMD ввела аппаратный бит NX в 2003 году, Intel вскоре последовала; Windows XP SP2 получила программный DEP, а Linux — через PaX/grsecurity до интеграции в основное ядро. Поскольку DEP исключает прямое выполнение из данных, атакующие перешли к повторному использованию кода (return-to-libc, ROP), поэтому DEP сочетают с ASLR, CFI и теневыми стеками.
● Примеры
- 01
Стек, помеченный как NX, приводит к сбою вместо запуска шеллкода.
- 02
mmap в укреплённом Linux отклоняет PROT_WRITE | PROT_EXEC.
● Частые вопросы
Что такое DEP?
Предотвращение выполнения данных (DEP, NX или W^X) помечает страницы памяти как неисполняемые, чтобы атакующий не мог запустить шеллкод, внедрённый в стек или кучу. Относится к категории Безопасность приложений в кибербезопасности.
Что означает DEP?
Предотвращение выполнения данных (DEP, NX или W^X) помечает страницы памяти как неисполняемые, чтобы атакующий не мог запустить шеллкод, внедрённый в стек или кучу.
Как работает DEP?
DEP, также называемая NX (No-eXecute) или W^X (write XOR execute), гарантирует, что страница памяти может быть либо записываемой, либо исполняемой, но не обеими одновременно. Бит NX в процессоре блокирует выборку инструкций со страниц данных — стека и кучи — и обесценивает классические атаки с инъекцией шеллкода. AMD ввела аппаратный бит NX в 2003 году, Intel вскоре последовала; Windows XP SP2 получила программный DEP, а Linux — через PaX/grsecurity до интеграции в основное ядро. Поскольку DEP исключает прямое выполнение из данных, атакующие перешли к повторному использованию кода (return-to-libc, ROP), поэтому DEP сочетают с ASLR, CFI и теневыми стеками.
Как защититься от DEP?
Защита от DEP обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия DEP?
Распространённые альтернативные названия: NX, Неисполняемая память, W^X.
● Связанные термины
- appsec№ 064
ASLR
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
- appsec№ 925
Возвратно-ориентированное программирование (ROP)
ROP — техника эксплуатации с повторным использованием кода, в которой короткие последовательности инструкций, оканчивающиеся RET, выстраиваются в цепочку для выполнения произвольных вычислений без внедрения нового кода.
- appsec№ 1095
Стек-канарейка
Стек-канарейка — это секретное значение между локальными буферами функции и сохранённым адресом возврата, позволяющее обнаружить переполнение стека до перехвата управления.
- appsec№ 217
Целостность потока управления
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
- appsec№ 670
Безопасность памяти
Безопасность памяти — свойство, при котором программа никогда не читает, не пишет и не исполняет память, которую она не выделяла легитимно, что устраняет целые классы уязвимостей.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) — функция процессора, объединяющая аппаратный теневой стек и Indirect Branch Tracking (IBT) для блокировки ROP, JOP и COP.
● См. также
- № 1058SMEP / SMAP