Inyección en eval
¿Qué es Inyección en eval?
Inyección en evalCaso particular de inyección de código causado por pasar entrada no confiable a primitivas de evaluación dinámica como eval() de JavaScript o eval/exec de Python.
La inyección en eval es el caso concreto de inyección de código donde la función de evaluación dinámica de un lenguaje — eval o new Function de JavaScript, setTimeout con string, eval/exec de Python, eval de Ruby, equivalentes en PHP o VBA — se invoca con datos que provienen directa o indirectamente del usuario. Como estas primitivas interpretan la cadena como código fuente completo en el proceso anfitrión, la explotación produce un RCE de nivel de lenguaje: acceso a importaciones, variables globales, sistema de archivos, entorno y procesos hijos. Las mitigaciones incluyen eliminar la evaluación dinámica, usar parsers seguros (JSON.parse, ast.literal_eval), validadores con listas blancas estrictas para expresiones matemáticas, y sandboxes como vm2 o subprocesos restringidos.
● Ejemplos
- 01
Python: result = eval(request.form['expr']) — payload __import__('os').system('id').
- 02
Node: new Function('return ' + req.query.f)() — payload process.mainModule.require('child_process').execSync('id').
● Preguntas frecuentes
¿Qué es Inyección en eval?
Caso particular de inyección de código causado por pasar entrada no confiable a primitivas de evaluación dinámica como eval() de JavaScript o eval/exec de Python. Pertenece a la categoría de Ataques y amenazas en ciberseguridad.
¿Qué significa Inyección en eval?
Caso particular de inyección de código causado por pasar entrada no confiable a primitivas de evaluación dinámica como eval() de JavaScript o eval/exec de Python.
¿Cómo funciona Inyección en eval?
La inyección en eval es el caso concreto de inyección de código donde la función de evaluación dinámica de un lenguaje — eval o new Function de JavaScript, setTimeout con string, eval/exec de Python, eval de Ruby, equivalentes en PHP o VBA — se invoca con datos que provienen directa o indirectamente del usuario. Como estas primitivas interpretan la cadena como código fuente completo en el proceso anfitrión, la explotación produce un RCE de nivel de lenguaje: acceso a importaciones, variables globales, sistema de archivos, entorno y procesos hijos. Las mitigaciones incluyen eliminar la evaluación dinámica, usar parsers seguros (JSON.parse, ast.literal_eval), validadores con listas blancas estrictas para expresiones matemáticas, y sandboxes como vm2 o subprocesos restringidos.
¿Cómo defenderse de Inyección en eval?
Las defensas contra Inyección en eval combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Inyección en eval?
Nombres alternativos comunes: Inyección en eval(), Inyección de evaluación dinámica.
● Términos relacionados
- attacks№ 195
Inyección de Código
Clase de vulnerabilidades en la que datos proporcionados por el atacante se interpretan y ejecutan como código de la aplicación, permitiendo ejecución arbitraria.
- attacks№ 1009
Inyección de plantillas del lado del servidor
Ataque que inyecta sintaxis del motor de plantillas en entradas no fiables, provocando ejecución de código en el servidor cuando la plantilla se renderiza.
- attacks№ 202
Inyección de comandos
Ataque en el que la entrada del usuario se pasa sin saneamiento a un intérprete del sistema, haciendo que la aplicación ejecute comandos proporcionados por el atacante.
- vulnerabilities№ 539
Deserialización insegura
Vulnerabilidad en la que una aplicación deserializa datos no confiables, permitiendo al atacante instanciar objetos arbitrarios y, a menudo, lograr ejecución remota de código.
- appsec№ 538
Validación de entrada
Comprobación del lado del servidor que verifica que cada entrada no confiable cumple el tipo, longitud, rango, formato y conjunto de valores esperados antes de ser procesada.