JIT Spray
¿Qué es JIT Spray?
JIT SprayTécnica de explotación que abusa de los compiladores JIT para plantar bytes ejecutables elegidos por el atacante dentro de páginas de memoria generadas legítimamente como ejecutables.
El JIT spray es una técnica de explotación de corrupción de memoria utilizada contra runtimes con compiladores Just-In-Time: motores de JavaScript como V8, SpiderMonkey o JSC, el CLR de .NET, la JVM, ActionScript o eBPF. El atacante construye un programa de alto nivel cuya salida compilada por JIT, vista como bytes crudos, decodifica las instrucciones nativas deseadas, permitiendo introducir un payload en las páginas RWX creadas por el JIT. Combinado con un fallo de corrupción de memoria que secuestra el flujo de control, el atacante salta a los gadgets esparcidos, eludiendo las protecciones de ejecución porque la memoria está legítimamente marcada como ejecutable. Las mitigaciones modernas incluyen constant blinding, regiones de código aleatorias, separación W^X, ASLR y CFI.
● Ejemplos
- 01
Esparcir muchas multiplicaciones JavaScript cuyas constantes inmediatas contienen shellcode.
- 02
Usar el JIT de ActionScript para insertar un NOP sled y shellcode en la región JIT de Flash Player.
● Preguntas frecuentes
¿Qué es JIT Spray?
Técnica de explotación que abusa de los compiladores JIT para plantar bytes ejecutables elegidos por el atacante dentro de páginas de memoria generadas legítimamente como ejecutables. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa JIT Spray?
Técnica de explotación que abusa de los compiladores JIT para plantar bytes ejecutables elegidos por el atacante dentro de páginas de memoria generadas legítimamente como ejecutables.
¿Cómo funciona JIT Spray?
El JIT spray es una técnica de explotación de corrupción de memoria utilizada contra runtimes con compiladores Just-In-Time: motores de JavaScript como V8, SpiderMonkey o JSC, el CLR de .NET, la JVM, ActionScript o eBPF. El atacante construye un programa de alto nivel cuya salida compilada por JIT, vista como bytes crudos, decodifica las instrucciones nativas deseadas, permitiendo introducir un payload en las páginas RWX creadas por el JIT. Combinado con un fallo de corrupción de memoria que secuestra el flujo de control, el atacante salta a los gadgets esparcidos, eludiendo las protecciones de ejecución porque la memoria está legítimamente marcada como ejecutable. Las mitigaciones modernas incluyen constant blinding, regiones de código aleatorias, separación W^X, ASLR y CFI.
¿Cómo defenderse de JIT Spray?
Las defensas contra JIT Spray combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para JIT Spray?
Nombres alternativos comunes: Spray JIT.
● Términos relacionados
- appsec№ 1182
Vulnerabilidad de Confusión de Tipos
Fallo de seguridad de memoria en el que el código accede a un objeto usando un tipo incompatible con su asignación real, permitiendo lectura, escritura o ejecución arbitrarias.
- appsec№ 129
Sandbox del Navegador
Capa de aislamiento a nivel de sistema operativo que confina el renderer y procesos auxiliares del navegador para que el código web comprometido no acceda al sistema de archivos u otras aplicaciones.
- vulnerabilities№ 1193
Uso después de liberar
Fallo de memoria en el que un programa sigue usando memoria ya liberada, lo que suele permitir controlar el estado de objetos y secuestrar la ejecución.
- attacks№ 471
Heap Spraying
Primitiva de explotacion que rellena la heap con muchas copias del payload para que un puntero corrupto caiga con alta probabilidad sobre datos del atacante.
- appsec№ 1075
Canal Lateral por Ejecución Especulativa
Clase de vulnerabilidades microarquitectónicas en las que las CPU filtran datos por cachés y predictores tras ejecutar instrucciones especulativamente por rutas que no debían ejecutarse.
- vulnerabilities№ 399
Exploit
Código, datos o técnica que aprovecha una vulnerabilidad para provocar un comportamiento no previsto, como ejecución de código, escalada de privilegios o fuga de información.