Programación orientada al retorno (ROP del inglés Return-oriented programming) es una técnica de explotación de seguridad informática que permite a un atacante ejecutar código ante la presencia de defensas de seguridad como protección de espacio ejecutable y código firmado.[1]

En esta técnica, un atacante gana control de la pila de llamadas para secuestrar el flujo de control del programa y entonces ejecuta secuencias de instrucciones de máquina elegidas cuidadosamente entre las que ya están presentes en la memoria del computador, las cuales se denominan "gadgets".[2]​ Cada gadget típicamente termina con una instrucción de retorno y está localizado en una subrutina dentro del programa existente y/o en el código de alguna biblioteca compartida. Estos gadgets encadenados le permiten a un atacante realizar operaciones arbitrarias en un computador que emplee defensas contra ataques más simples.

Referencias

editar
  1. Shacham, Hovav; Buchanan, Erik; Roemer, Ryan; Savage, Stefan. «Return-Oriented Programming: Exploits Without Code Injection». Consultado el 12 de agosto de 2009. 
  2. Buchanan, E.; Roemer, R.; Shacham, H.; Savage, S. (October 2008). «When Good Instructions Go Bad: Generalizing Return-Oriented Programming to RISC». Proceedings of the 15th ACM conference on Computer and communications security - CCS '08. pp. 27-38. ISBN 978-1-59593-810-7. doi:10.1145/1455770.1455776. 

📚 Artikel Terkait di Wikipedia

BETA (lenguaje de programación)

Madsen, Birger Møller-Pedersen, Kristen Nygaard: Object-Oriented Programming in the BETA Programming Language, [1] Archivado el 15 de enero de 2019 en Wayback

Composición de funciones (informática)

Transactions on Programming Languages and Systems 15 (1): 73-132, doi:10.1145/151646.151649 .. Cox, Brad (1986), Object-oriented Programming, an Evolutionary

Programación estructurada de Jackson

System Development Warnier Structured Programming Wieringa, R (Dec 1998), «A survey of structured and object-oriented software specification methods and

Objective-C

programación orientada a objetos a C la cual llamó «OOPC», Object-Oriented Programming in C. Love mientras tanto, fue contratado por Shlumberger Research

Mónada (programación funcional)

"Monads as a theoretical foundation for AOP". Workshop on Aspect Oriented Programming, ECOOP 1997. Moggi, Eugenio (1991). «Notions of computation and monads»

Lista enlazada

con flechas apuntando a los sucesivos nodos de la lista, apareció en Programming the Logic Theory Machine, de Newell y Shaw. Newell y Simón fueron reconocidos

Forth

Ellis Horwood Limited. ISBN 0-7458-0418-7.  Pountain, Dick (1987). Object-oriented Forth: Implementation of Data Structures (paperback|formato= requiere |url=

Grandes sistemas de Burroughs

B5000 fue escrito en una extensión ALGOL llamada Executive Systems Programming Oriented Language (ESPOL), (Lenguaje Orientado a la Programación de Sistemas