#RETGUARD

Peter N. M. Hansteenpitrh
2023-09-25

Viable ROP-free roadmap for i386/armv8/riscv64/alpha/sparc64 undeadly.org/cgi?action=articl -free

2023-01-11
OpenBSD: retguard for amd64 system calls

Что такое retguard

Removing ROP Gadgets from OpenBSD (EuroBSD 2018, Todd Mortimer)

  • Для каждой функции выделяется свое случайное значение (random cookie) из ELF-секции .openbsd.randomdata.
  • При входе в функцию вычисляется и сохраняется с стековом фрейме результат операции XOR адреса возврата и этого случайного значения (random cookie ^ return address).
  • Перед выходом из функции извлекается адрес возврата и вычисляется операция XOR со значением, сохраненным в фрейме стека (saved value ^ return address). Если результат вычисления не совпадает с ассоциированным с функцией случайным значением (random cookie), то исполнение прерывается.

Что изменилось в 7.3

Теперь механизм retguard внедрен в заглушки системных вызов пользовательского режима (libc, ld.so, базовые программы) для архитектуры amd64 (как это уже есть для архитектуры arm64).
Это серьезно усложнят использование кода заглушек системных вызовов (в частности инструкции syscall) в качестве элементов #ROP цепочек (наряду с уже используемыми механизмами #aslr и перелинковки libc.so и ld.so).

#security #openbsd #retguard

Peter N. M. Hansteenpitrh
2023-01-11
Bryan Steele :flan_beard:brynet@bsd.network
2018-09-09

Careful, if you blinked you may have missed that #RETGUARD has reduced the number of useful #ROP gadgets at runtime on #OpenBSD/arm64 to zero.

marc.info/?l=openbsd-cvs&m=153

Bryan Steele :flan_beard:brynet@bsd.network
2018-08-12
peter hessler @openbsdphessler@bsd.network
2018-08-11

mortimer@ has been a busy bee.

He's been working on the #retguard feature in #llvm #clang for #OpenBSD's #arm64 platform, and it has survived two different package bulk builds. No major failures, even rust builds and runs fine.

Bryan Steelecanadianbryan
2018-06-06

Todd Mortimer just landed his mitigation work (aka -fret-protector) into -current, and enabled by default.

marc.info/?l=openbsd-cvs&m=152

Bryan Steelecanadianbryan
2017-08-19

Theo de Raadt on : return-address protection using : marc.ttias.be/openbsd-tech/201

"The preamble XOR's the return address at top of stack with the stack pointer value itself."

"ROP attack methods are impacted because existing gadgets are transformed to consist of '<gadget artifacts> <mangle ret address> RET'."

"That pivots the return sequence off the ROP chain in a highly unpredictable and inconvenient fashion."

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst