one_gadget RCE
Что такое one_gadget RCE?
one_gadget RCEЭксплойтерский шорткат (в CTF и на практике): вызвав один адрес libc при выполнении ограничений на регистры и стек, можно получить shell.
one_gadget — это последовательность инструкций внутри glibc, которая в итоге вызывает execve("/bin/sh", NULL, NULL), если попасть в неё с нужными значениями регистров и стека. Утилита one_gadget от david942j сканирует libc и перечисляет такие адреса вместе с их ограничениями (rax == 0, rsp+0x40 == NULL и т. д.). Если атакующий может перехватить один указатель на функцию или адрес возврата (GOT overwrite, атаки на FILE-стримы, unsorted bin), он получает shell без построения полной ROP-цепочки. Условия требуется аккуратно удовлетворить вспомогательными гаджетами или stack pivot. Меры защиты: constant blinding, CFI, seccomp-песочницы и stripped/модифицированные libc без канонических гаджетов.
● Примеры
- 01
Запуск /bin/sh через one_gadget после единственного GOT overwrite в бинарнике с libc-2.31.
- 02
FILE-stream эксплойт портит vtable у _IO_2_1_stdout_ и переходит к выполнимому one_gadget.
● Частые вопросы
Что такое one_gadget RCE?
Эксплойтерский шорткат (в CTF и на практике): вызвав один адрес libc при выполнении ограничений на регистры и стек, можно получить shell. Относится к категории Атаки и угрозы в кибербезопасности.
Что означает one_gadget RCE?
Эксплойтерский шорткат (в CTF и на практике): вызвав один адрес libc при выполнении ограничений на регистры и стек, можно получить shell.
Как работает one_gadget RCE?
one_gadget — это последовательность инструкций внутри glibc, которая в итоге вызывает execve("/bin/sh", NULL, NULL), если попасть в неё с нужными значениями регистров и стека. Утилита one_gadget от david942j сканирует libc и перечисляет такие адреса вместе с их ограничениями (rax == 0, rsp+0x40 == NULL и т. д.). Если атакующий может перехватить один указатель на функцию или адрес возврата (GOT overwrite, атаки на FILE-стримы, unsorted bin), он получает shell без построения полной ROP-цепочки. Условия требуется аккуратно удовлетворить вспомогательными гаджетами или stack pivot. Меры защиты: constant blinding, CFI, seccomp-песочницы и stripped/модифицированные libc без канонических гаджетов.
Как защититься от one_gadget RCE?
Защита от one_gadget RCE обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия one_gadget RCE?
Распространённые альтернативные названия: one_gadget.
● Связанные термины
- attacks№ 569
Jump-Oriented Programming (JOP)
Техника повторного использования кода (Bletsch и др., 2011): цепочка гаджетов с косвенными переходами через диспетчер — альтернатива ROP без ret.
- vulnerabilities№ 667
Повреждение памяти
Обобщающий термин для уязвимостей, при которых программа пишет за пределы предполагаемой памяти, нарушая типовую безопасность, поток управления или целостность данных.
- vulnerabilities№ 131
Переполнение буфера
Ошибка безопасности памяти, при которой программа пишет за концом выделенного буфера, повреждая соседнюю память и часто открывая возможность выполнения кода.