Problema de seguridad crítico

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

    Eliminar todas las llamadas a eval()

    No hay forma segura de usar eval() con entrada de usuario. Elimínalo completamente.

  2. 2

    Usar JSON.parse() para JSON

    Si parseas JSON, usa JSON.parse() en lugar de eval().

  3. 3

    Refactorizar código dinámico

    Reemplaza eval con lógica apropiada—usa sentencias switch, objetos de búsqueda o lógica condicional.

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

Buscar vulnerabilidades de seguridad

Recursos relacionados

Problemas de seguridad relacionados