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

one_gadget RCE

¿Qué es one_gadget RCE?

one_gadget RCEAtajo de explotacion (en CTFs y en la practica) que invoca una unica direccion de libc para lanzar una shell, siempre que se cumplan las restricciones de registros y pila.


Un one_gadget es una secuencia de instrucciones en glibc que termina invocando execve("/bin/sh", NULL, NULL) si se llega a ella con ciertas precondiciones de registros y pila. La herramienta one_gadget de david942j escanea libc y lista esas direcciones con sus restricciones (por ejemplo, rax == 0 o rsp+0x40 == NULL). El atacante que pueda secuestrar un solo puntero de funcion o direccion de retorno (GOT overwrite, ataques sobre FILE streams, unsorted bin) obtiene una shell sin construir una cadena ROP completa. Hay que cumplir las restricciones con cuidado, a menudo con gadgets auxiliares o pivots de pila. Mitigaciones: constant-blinding, CFI, sandboxes con seccomp y libc modificada o stripped que retire los gadgets canonicos.

Ejemplos

  1. 01

    Lanzar /bin/sh con one_gadget tras un unico GOT overwrite en un binario con libc-2.31.

  2. 02

    Exploit FILE-stream que corrompe la vtable de _IO_2_1_stdout_ para saltar a un one_gadget viable.

Preguntas frecuentes

¿Qué es one_gadget RCE?

Atajo de explotacion (en CTFs y en la practica) que invoca una unica direccion de libc para lanzar una shell, siempre que se cumplan las restricciones de registros y pila. Pertenece a la categoría de Ataques y amenazas en ciberseguridad.

¿Qué significa one_gadget RCE?

Atajo de explotacion (en CTFs y en la practica) que invoca una unica direccion de libc para lanzar una shell, siempre que se cumplan las restricciones de registros y pila.

¿Cómo funciona one_gadget RCE?

Un one_gadget es una secuencia de instrucciones en glibc que termina invocando execve("/bin/sh", NULL, NULL) si se llega a ella con ciertas precondiciones de registros y pila. La herramienta one_gadget de david942j escanea libc y lista esas direcciones con sus restricciones (por ejemplo, rax == 0 o rsp+0x40 == NULL). El atacante que pueda secuestrar un solo puntero de funcion o direccion de retorno (GOT overwrite, ataques sobre FILE streams, unsorted bin) obtiene una shell sin construir una cadena ROP completa. Hay que cumplir las restricciones con cuidado, a menudo con gadgets auxiliares o pivots de pila. Mitigaciones: constant-blinding, CFI, sandboxes con seccomp y libc modificada o stripped que retire los gadgets canonicos.

¿Cómo defenderse de one_gadget RCE?

Las defensas contra one_gadget RCE combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.

¿Cuáles son otros nombres para one_gadget RCE?

Nombres alternativos comunes: one_gadget.

Términos relacionados