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)?
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-цепочки.
Как защититься от Jump-Oriented Programming (JOP)?
Защита от Jump-Oriented Programming (JOP) обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия Jump-Oriented Programming (JOP)?
Распространённые альтернативные названия: JOP.
● Связанные термины
- attacks№ 753
one_gadget RCE
Эксплойтерский шорткат (в CTF и на практике): вызвав один адрес libc при выполнении ограничений на регистры и стек, можно получить shell.
- appsec№ 217
Целостность потока управления
Целостность потока управления (CFI) ограничивает непрямые вызовы и возвраты программы заранее вычисленным множеством легитимных целей, блокируя ROP и JOP.
- appsec№ 064
ASLR
ASLR случайным образом размещает код, стеки, кучи и библиотеки в памяти при каждом запуске, чтобы атакующий не мог предсказать целевые адреса для эксплойтов.
- vulnerabilities№ 667
Повреждение памяти
Обобщающий термин для уязвимостей, при которых программа пишет за пределы предполагаемой памяти, нарушая типовую безопасность, поток управления или целостность данных.