ASIACCS’11 · gadgets, dispatcher, indirect jmp

JOP

0x00000000

Jump-Oriented Programming: el ataque de reutilización de código que abandonó la pila y el ret para encadenar gadgets con saltos indirectos. Una línea de tiempo de su aparición, su expansión ofensiva y las contramedidas que intentaron contenerla, a partir del mapeo sistemático de la literatura.

Hito fundacional Técnica ofensiva Contramedida
2010

El informe técnico que lo empieza todo

Bletsch, Jiang & Freeh — NC State, TR-2010-8

Un año antes de su publicación formal, un informe técnico de NC State plantea por primera vez la idea de encadenar gadgets terminados en saltos indirectos en lugar de instrucciones ret, sentando las bases conceptuales de JOP.

2011

JOP se formaliza en ASIACCS

Bletsch, Jiang, Freeh & Liang

Se presenta oficialmente el jump-oriented programming: un ataque de reutilización de código que elimina toda dependencia de la pila y de ret, encadenando gadgets mediante un “dispatcher gadget” que gestiona el flujo con saltos indirectos. Los autores demuestran su viabilidad usando gadgets hallados en glibc.

2011

Control-Flow Locking

Bletsch et al.

El mismo grupo que describe el ataque propone también una de las primeras contramedidas: una técnica que garantiza que el grafo de flujo de control de una aplicación solo puede desviarse una vez, impidiendo que esa desviación se use para forzar una llamada al sistema maliciosa.

2012

Branch Regulation impone reglas al procesador

Kayaalp et al.

Se propone extender la arquitectura del procesador con una regla simple: un salto indirecto solo puede apuntar dentro de la función actual o al punto de entrada de otra función. Al eliminar la mayoría de los “dispatcher gadgets” disponibles, esta defensa de bajo costo reduce drásticamente la superficie de ataque de JOP.

2013

JOP sale del laboratorio

Ataques sobre binarios Windows x86 · JOP-alarm · JITSafe

La técnica se demuestra contra binarios reales de Windows x86, mientras aparecen las primeras herramientas de detección de anomalías basadas en JOP y defensas como JITSafe contra el rociado de código asistido por JIT que suele acompañar a estos ataques.

2015

Tiny-JOP evade, Target Shepherding responde

Sadeghi et al. · defensa “target shepherding”

Tiny-JOP demuestra que reducir el tamaño de los gadgets basta para esquivar las detecciones basadas en umbrales. Casi en paralelo, aparece una defensa ligera que genera código de vigilancia antes de cada salto indirecto, verificando en tiempo de ejecución si el destino es legítimo.

2018

Pure-Call Oriented Programming

PCOP

Si las defensas empiezan a vigilar los saltos indirectos, ¿por qué no encadenar los gadgets con instrucciones call en su lugar? PCOP reformula la lógica de JOP para sortear las contramedidas centradas específicamente en jmp.

2020

Hurdle blinda las instrucciones de salto

DeLozier et al.

Una nueva defensa se propone asegurar directamente las instrucciones de salto frente a ataques de reutilización de código, ampliando el catálogo de mitigaciones más allá de las soluciones centradas únicamente en la pila o en ret.

2024

Un mapeo sistemático traza el estado del arte

Estudio de mapeo sistemático, 2010–2021

Revisando bases como ACM DL, IEEE, Web of Science, Scopus y Springer Link, este trabajo sintetiza más de una década de investigación en JOP: Control-Flow Locking, Branch Regulation, JITSafe y CIMB destacan como las principales líneas de mitigación, mientras que buena parte de la seguridad ofensiva sigue buscando cómo superar esas mismas defensas o abrir nuevos escenarios de ataque.

Fuentes principales

  1. Bletsch, T., Jiang, X., Freeh, V.W. — Jump-Oriented Programming: A New Class of Code-Reuse Attack, Technical Report TR-2010-8, NC State University (2010)
  2. Bletsch, T., Jiang, X., Freeh, V.W., Liang, Z. — Jump-Oriented Programming: A New Class of Code-Reuse Attack, ASIACCS (2011)
  3. Kayaalp et al. — Branch Regulation: Low-Overhead Protection from Code Reuse Attacks (2012)
  4. Chen, P., Wu, R., Mao, B. — JITSafe: A Framework Against Just-in-Time Spraying Attacks, IET Information Security (2013)
  5. Sadeghi, A. et al. — Tiny Jump-Oriented Programming Attack: A Class of Code Reuse Attacks (2015)
  6. Pure-Call Oriented Programming (PCOP): Chaining the Gadgets Using Call Instructions (2018)
  7. DeLozier, C. et al. — Hurdle: Securing Jump Instructions Against Code Reuse Attacks (2020)
  8. Jump-Oriented Programming: A Systematic Mapping Study (2024) — ResearchGate: publication/383751131