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

Возвратно-ориентированное программирование (ROP)

Что такое Возвратно-ориентированное программирование (ROP)?

Возвратно-ориентированное программирование (ROP)ROP — техника эксплуатации с повторным использованием кода, в которой короткие последовательности инструкций, оканчивающиеся RET, выстраиваются в цепочку для выполнения произвольных вычислений без внедрения нового кода.


Ховав Шахам представил ROP в 2007 году как способ обойти DEP/W^X. Злоумышленник портит стек и пишет цепочку адресов, каждый из которых указывает на короткий «гаджет», заканчивающийся RET. После каждого гаджета RET вытаскивает следующий адрес, и из существующих исполняемых байтов (libc, библиотек, программы) собирается тьюринг-полное вычисление. Существуют варианты JOP (jmp), COP (call) и SROP (фреймы сигналов). Именно ROP стал главной причиной стандартизации ASLR, CFI, стек-канареек, теневых стеков, Intel CET и языков с безопасной памятью; защита нацеливается на доступность гаджетов, целостность потока управления или безопасность памяти в исходном коде.

Примеры

  1. 01

    Эксплойт связывает гаджеты pop-rdi/syscall в glibc для вызова execve("/bin/sh").

  2. 02

    Эксплойт ядра использует утечку KASLR и ROP к commit_creds(prepare_kernel_cred(0)).

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

Что такое Возвратно-ориентированное программирование (ROP)?

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

Что означает Возвратно-ориентированное программирование (ROP)?

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

Как работает Возвратно-ориентированное программирование (ROP)?

Ховав Шахам представил ROP в 2007 году как способ обойти DEP/W^X. Злоумышленник портит стек и пишет цепочку адресов, каждый из которых указывает на короткий «гаджет», заканчивающийся RET. После каждого гаджета RET вытаскивает следующий адрес, и из существующих исполняемых байтов (libc, библиотек, программы) собирается тьюринг-полное вычисление. Существуют варианты JOP (jmp), COP (call) и SROP (фреймы сигналов). Именно ROP стал главной причиной стандартизации ASLR, CFI, стек-канареек, теневых стеков, Intel CET и языков с безопасной памятью; защита нацеливается на доступность гаджетов, целостность потока управления или безопасность памяти в исходном коде.

Как защититься от Возвратно-ориентированное программирование (ROP)?

Защита от Возвратно-ориентированное программирование (ROP) обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия Возвратно-ориентированное программирование (ROP)?

Распространённые альтернативные названия: ROP, Атака повторного использования кода, Return-to-libc.

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

См. также