JOP
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
