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

Return-Oriented Programming

¿Qué es Return-Oriented Programming?

Return-Oriented ProgrammingROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.


Hovav Shacham presento ROP en 2007 para esquivar DEP/W^X. El atacante corrompe la pila y escribe una cadena de direcciones que apuntan a gadgets cortos terminados en RET. Tras ejecutar cada gadget, RET extrae la siguiente direccion y se obtiene un computo Turing-completo construido solo con bytes ejecutables existentes (libc, librerias, el programa). Existen variantes como JOP (saltos), COP (llamadas) y SROP (signal frames). ROP es la razon principal por la que se estandarizaron ASLR, CFI, canarios, shadow stacks, Intel CET y los lenguajes con seguridad de memoria; las defensas atacan la disponibilidad de gadgets, la integridad del flujo o la seguridad de memoria en el codigo fuente.

Ejemplos

  1. 01

    Exploit que encadena gadgets pop-rdi/syscall de glibc para llamar a execve("/bin/sh").

  2. 02

    Exploit del kernel que usa una fuga de KASLR y ROP a commit_creds(prepare_kernel_cred(0)).

Preguntas frecuentes

¿Qué es Return-Oriented Programming?

ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.

¿Qué significa Return-Oriented Programming?

ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.

¿Cómo funciona Return-Oriented Programming?

Hovav Shacham presento ROP en 2007 para esquivar DEP/W^X. El atacante corrompe la pila y escribe una cadena de direcciones que apuntan a gadgets cortos terminados en RET. Tras ejecutar cada gadget, RET extrae la siguiente direccion y se obtiene un computo Turing-completo construido solo con bytes ejecutables existentes (libc, librerias, el programa). Existen variantes como JOP (saltos), COP (llamadas) y SROP (signal frames). ROP es la razon principal por la que se estandarizaron ASLR, CFI, canarios, shadow stacks, Intel CET y los lenguajes con seguridad de memoria; las defensas atacan la disponibilidad de gadgets, la integridad del flujo o la seguridad de memoria en el codigo fuente.

¿Cómo defenderse de Return-Oriented Programming?

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

¿Cuáles son otros nombres para Return-Oriented Programming?

Nombres alternativos comunes: ROP, Ataque de reutilizacion de codigo, Return-to-libc.

Términos relacionados

Véase también