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

Return-Oriented Programming

O que é Return-Oriented Programming?

Return-Oriented ProgrammingROP e uma tecnica de exploracao por reuso de codigo que encadeia pequenas sequencias de instrucoes terminadas em RET para executar computacao arbitraria sem injetar codigo.


Hovav Shacham apresentou ROP em 2007 para contornar DEP/W^X. O atacante corrompe a pilha e escreve uma cadeia de enderecos que apontam para gadgets curtos terminados em RET. Apos cada gadget, RET retira o proximo endereco e produz-se uma computacao Turing-completa apenas com bytes executaveis existentes (libc, bibliotecas, programa). Variantes incluem JOP (jmp), COP (call) e SROP (signal frames). O ROP foi a principal motivacao para padronizar ASLR, CFI, canarios, shadow stacks, Intel CET e linguagens com seguranca de memoria; as defesas atacam disponibilidade de gadgets, integridade de fluxo ou seguranca de memoria no codigo-fonte.

Exemplos

  1. 01

    Exploit encadeia gadgets pop-rdi/syscall da glibc para chamar execve("/bin/sh").

  2. 02

    Exploit de kernel combina fuga de KASLR e ROP para commit_creds(prepare_kernel_cred(0)).

Perguntas frequentes

O que é Return-Oriented Programming?

ROP e uma tecnica de exploracao por reuso de codigo que encadeia pequenas sequencias de instrucoes terminadas em RET para executar computacao arbitraria sem injetar codigo. Pertence à categoria Segurança de aplicações da cibersegurança.

O que significa Return-Oriented Programming?

ROP e uma tecnica de exploracao por reuso de codigo que encadeia pequenas sequencias de instrucoes terminadas em RET para executar computacao arbitraria sem injetar codigo.

Como funciona Return-Oriented Programming?

Hovav Shacham apresentou ROP em 2007 para contornar DEP/W^X. O atacante corrompe a pilha e escreve uma cadeia de enderecos que apontam para gadgets curtos terminados em RET. Apos cada gadget, RET retira o proximo endereco e produz-se uma computacao Turing-completa apenas com bytes executaveis existentes (libc, bibliotecas, programa). Variantes incluem JOP (jmp), COP (call) e SROP (signal frames). O ROP foi a principal motivacao para padronizar ASLR, CFI, canarios, shadow stacks, Intel CET e linguagens com seguranca de memoria; as defesas atacam disponibilidade de gadgets, integridade de fluxo ou seguranca de memoria no codigo-fonte.

Como se defender contra Return-Oriented Programming?

As defesas contra Return-Oriented Programming costumam combinar controles técnicos e práticas operacionais, conforme detalhado na definição acima.

Quais são outros nomes para Return-Oriented Programming?

Nomes alternativos comuns: ROP, Ataque de reuso de codigo, Return-to-libc.

Termos relacionados

Veja também