eval() peligroso en n8n
Por qué eval() es extremadamente peligroso y nunca debe usarse
¿Qué es este problema?
La función eval() ejecuta código JavaScript arbitrario desde un string. En n8n, usar eval() permite a los atacantes inyectar y ejecutar código malicioso si pueden controlar cualquier entrada que llegue a la sentencia eval.
Patrones peligrosos:
•eval(userInput) - ejecutando strings controlados por usuario•eval('(' + jsonString + ')') - parseando JSON con eval•new Function(code) - peligro similar a eval•setTimeout(stringCode, ms) - cuando el primer arg es un string
¿Por qué es peligroso?
Ejecución remota de código
Los atacantes pueden ejecutar cualquier código JavaScript en tu servidor n8n.
Robo de datos
El código malicioso puede acceder y exfiltrar datos del workflow, credenciales y variables de entorno.
Compromiso del servidor
Combinado con escapes del sandbox, eval puede llevar a control total del servidor.
Movimiento lateral
Una instancia de n8n comprometida puede usarse para atacar otros sistemas internos.
Cómo solucionarlo
- 1
Eliminar todas las llamadas a eval()
No hay forma segura de usar eval() con entrada de usuario. Elimínalo completamente.
- 2
Usar JSON.parse() para JSON
Si parseas JSON, usa JSON.parse() en lugar de eval().
- 3
Refactorizar código dinámico
Reemplaza eval con lógica apropiada—usa sentencias switch, objetos de búsqueda o lógica condicional.
- 4
Auditar códigos importados
Asegúrate de que ninguna biblioteca importada use eval() internamente con entrada controlada por usuario.
Escanea tu workflow ahora
Sube tu archivo JSON de n8n y detecta cualquier uso peligroso de eval() en nodos Code.