Jump-Oriented Programming (JOP)
Что такое Jump-Oriented Programming (JOP)?
Jump-Oriented Programming (JOP)Техника повторного использования кода (Bletsch и др., 2011): цепочка гаджетов с косвенными переходами через диспетчер — альтернатива ROP без ret.
JOP представили Bletsch, Jiang, Freeh и Liang в 2011 году как обобщение Return-Oriented Programming. Вместо гаджетов, оканчивающихся ret, используются гаджеты, заканчивающиеся косвенными переходами вроде jmp [rax], и подконтрольный атакующему диспетчер, идущий по таблице адресов гаджетов. Стек вызовов больше не управляет потоком, поэтому JOP обходит старые меры защиты, нацеленные на ret-цепочки (shadow stack, stack canary). Практические JOP-цепочки демонстрировались на Windows, Linux и встраиваемых системах, часто в связке с утечками для обхода ASLR. Современная аппаратная защита — Intel CET/IBT и ARM BTI: они ограничивают цели косвенных переходов и разрушают наивные JOP-цепочки.
● Примеры
- 01
JOP-цепочка против встраиваемой прошивки с укреплённым стеком вызовов, но свободными косвенными переходами.
- 02
Сочетание JOP-диспетчера с libc на Linux для вызова execve в обход защиты, основанной только на shadow stack.
● Частые вопросы
Что такое Jump-Oriented Programming (JOP)?
Техника повторного использования кода (Bletsch и др., 2011): цепочка гаджетов с косвенными переходами через диспетчер — альтернатива ROP без ret. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает Jump-Oriented Programming (JOP)?
Техника повторного использования кода (Bletsch и др., 2011): цепочка гаджетов с косвенными переходами через диспетчер — альтернатива ROP без ret.
Как защититься от Jump-Oriented Programming (JOP)?
Защита от Jump-Oriented Programming (JOP) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Jump-Oriented Programming (JOP)?
Распространённые альтернативные названия: JOP.