Guía de despliegue

n8n CVE-2026-21877: parchea la RCE CVSS 9.9 de urgencia

Desplegar en un VPS Cloud →

Tutorial

n8n CVE-2026-21877: parchea la RCE CVSS 9.9 de urgencia

Seguridad y monitorización10 min de lectura8 pasos

La alerta CERT Canadá AL26-001 publicada el 12 de enero de 2026 identifica tres vulnerabilidades activas en n8n. La más crítica, CVE-2026-21877 (CVSS 9.9), permite a un usuario autenticado ejecutar código arbitrario en el host a través del nodo Git. Cualquier instancia autoalojada sin actualizar está expuesta. Esta guía cubre el procedimiento de parcheo, las verificaciones post-migración y el workaround del bug de scheduling introducido en la versión 2.21.7.

Contenido· CVE-2026-21877: por qué está justificada la puntuación CVSS 9.91/9
  1. 01CVE-2026-21877: por qué está justificada la puntuación CVSS 9.9
  2. 02Quién está expuesto y en qué rango de versiones
  3. 03Verificar la versión de tu instancia n8n
  4. 04Procedimiento de actualización a n8n ≥ 1.121.3
  5. 05Endurecimiento post-parche: reducir la superficie de ataque
  6. 06Bug de scheduling tras la versión 2.21.7: síntoma y workaround
  7. 07Verificaciones post-migración: qué controlar antes de reabrir el tráfico
  8. 08Versiones de n8n: exposición a los CVE de la alerta AL26-001
  9. 09Mantener actualizada tu instancia n8n: la vía con VPS

CVE-2026-21877: por qué está justificada la puntuación CVSS 9.9

La vulnerabilidad está clasificada como CWE-434 — subida de archivo de tipo peligroso sin restricciones. El nodo Git de n8n permite, bajo ciertas condiciones, a un usuario autenticado escribir un archivo arbitrario en el sistema de archivos del servidor. Un atacante puede escribir un script en un directorio ejecutado por el proceso n8n y luego activarlo mediante un workflow para lograr ejecución remota de código.

El vector de ataque es de red, sin interacción adicional del usuario requerida. El alcance cambia (scope: Changed), lo que significa que el impacto va más allá del proceso n8n: la confidencialidad, integridad y disponibilidad del host quedan comprometidas. La puntuación EPSS alcanza el 5,449% (percentil 92), lo que indica una alta probabilidad de explotación activa en 30 días.

La alerta AL26-001 del Centro Canadiense de Ciberseguridad también cubre CVE-2026-21858 (validación de entrada insuficiente en peticiones webhook, CVSS 10.0 según algunas fuentes) y CVE-2025-68613 (aislamiento insuficiente de expresiones en configuraciones de workflows). Las tres deben abordarse en el mismo ámbito de remediación.

Quién está expuesto y en qué rango de versiones

  • Todas las instancias autoalojadas de n8n >= 0.123.0 y < 1.121.3 son vulnerables a CVE-2026-21877 según el advisory de GitHub GHSA-v364-rw7m-3263.
  • Las instancias detrás de un proxy inverso no están protegidas: la vulnerabilidad es autenticada — una cuenta comprometida o un colaborador interno malicioso son suficientes; el perímetro de red no cambia la exposición.
  • Tanto los despliegues Docker como npm están afectados: el vector es el nodo Git, presente en todas las distribuciones de n8n independientemente del método de instalación.
  • Las instancias n8n Cloud gestionadas por n8n.io recibieron el parche sin ninguna acción requerida por el operador.
  • CVE-2025-68613 cubre las versiones 0.211.0 a < 1.120.4: si aún no has alcanzado la 1.120.4, estás expuesto a ambas CVE simultáneamente.
  • CVE-2026-21858 afecta a las versiones 1.65.0 a < 1.121.0: actualizar a 1.121.3 resuelve las tres CVE en una sola operación.
  • La puntuación EPSS del 5,449% coloca esta CVE en el percentil 92 de probabilidad de explotación activa, justificando la prioridad del parche sobre el resto del mantenimiento programado.

Verificar la versión de tu instancia n8n

Antes de aplicar el parche, identifica la versión exacta en ejecución. Tres métodos según tu contexto de despliegue.

A través de la interfaz web: inicia sesión en tu instancia, haz clic en el icono de perfil en la parte inferior izquierda y luego en "About n8n". La versión aparece en la ventana modal.

A través de Docker: el comando docker inspect <nombre-del-contenedor> --format '{{index .Config.Labels "org.opencontainers.image.version"}}' devuelve la versión de la imagen en ejecución. Si el contenedor se inició desde la imagen n8nio/n8n:latest, este valor refleja lo que estaba vigente en el momento del último docker pull.

A través de la API interna: un curl http://localhost:5678/healthz en el host devuelve {"status":"ok"} con la versión en los headers si la instancia está en ejecución.

Si tu versión es inferior a 1.121.3, aplica el procedimiento siguiente sin esperar a la próxima ventana de mantenimiento.

Procedimiento de actualización a n8n ≥ 1.121.3

  1. Copia de seguridad de la base de datos y archivos de configuración

    Antes de cualquier actualización, guarda el estado actual. Para una instalación Docker Compose, exporta la base de datos SQLite o PostgreSQL según tu configuración:

    # SQLite (ruta por defecto)
    cp ~/.n8n/database.sqlite ~/.n8n/database.sqlite.bak-$(date +%Y%m%d)
    
    # PostgreSQL
    pg_dump -U n8n -d n8n > n8n-backup-$(date +%Y%m%d).sql

    Copia también tu docker-compose.yml y archivo .env en un directorio de backup.

  2. Actualizar el archivo docker-compose.yml

    Si usas la imagen n8nio/n8n:latest, no se requieren cambios en el archivo docker-compose.yml. Si has fijado una versión explícita (por ejemplo n8nio/n8n:1.115.0), actualiza la línea image:

    services:
      n8n:
        image: n8nio/n8n:1.121.3

    Si quieres seguir la rama estable de larga duración, usar una etiqueta de versión explícita es preferible a latest para controlar las ventanas de actualización.

  3. Descargar la nueva imagen

    Desde el directorio que contiene tu docker-compose.yml:

    docker compose pull

    Este comando descarga únicamente las capas de la imagen que han cambiado. Con un enlace ascendente de 100 Mbit/s, cuenta con 30 a 90 segundos según tu caché local.

  4. Detener la instancia actual

    docker compose down

    El cierre es ordenado: n8n espera a que terminen las ejecuciones en curso antes de detenerse, a menos que añadas --timeout 0. En una instancia con alta carga, es preferible esperar a que los workflows activos terminen antes de ejecutar este comando, o suspender los workflows críticos desde la interfaz.

  5. Reiniciar con la nueva imagen

    docker compose up -d

    Docker Compose utiliza la imagen recién descargada. El arranque suele tardar de 10 a 20 segundos. El log de inicio debe mostrar la versión 1.121.3 o superior.

  6. Verificar la versión desplegada

    docker compose logs n8n | grep -i 'version\|n8n@'

    O a través de la API interna, desde el host:

    curl -s http://localhost:5678/healthz

    Confirma que la versión mostrada en la interfaz (icono de perfil → About n8n) sea 1.121.3 o superior antes de considerar la actualización completa.

  7. Deshabilitar el nodo Git si no lo utilizas

    Para neutralizar el vector de ataque inmediatamente sin esperar la actualización (por ejemplo si no hay ventana de mantenimiento disponible), deshabilita el nodo Git mediante la variable de entorno:

    N8N_NODES_EXCLUDE='["n8n-nodes-base.git"]'

    Añade esta variable a tu archivo .env y reinicia la instancia. Esto no es un sustituto de la actualización: aplica el parche tan pronto como sea posible.

  8. Para una instalación npm (sin Docker)

    npm update -g n8n
    # O, si usas un gestor de procesos:
    pm2 stop n8n
    npm update -g n8n
    pm2 start n8n

    Verifica la versión instalada con n8n --version. Se recomienda migrar a Docker para nuevas instalaciones — la guía dedicada n8n-migration-npm-docker-avant-v3 cubre este recorrido en detalle.

Endurecimiento post-parche: reducir la superficie de ataque

La actualización corrige la vulnerabilidad conocida, pero varias configuraciones refuerzan la postura de seguridad general de la instancia.

Restringe los permisos del proceso n8n. El contenedor no debe ejecutarse como root. La imagen oficial utiliza el usuario node por defecto desde varias versiones — verifica que tu docker-compose.yml no contenga user: root.

Activa la autenticación. Si tu instancia está expuesta en internet sin autenticación, añade N8N_BASIC_AUTH_ACTIVE=true con credenciales fuertes, o coloca la instancia detrás de un proxy que requiera autenticación. CVE-2026-21877 es autenticada, pero existen otros vectores no autenticados en el ecosistema.

Limita los nodos permitidos. La variable N8N_NODES_INCLUDE permite autorizar solo un subconjunto de nodos. En instancias dedicadas a workflows sin necesidad de acceso Git o al sistema, una lista de inclusión reduce la superficie.

Audita las cuentas de usuario. En la interfaz de administración, verifica que cada cuenta activa sea legítima y que las cuentas de prueba o de antiguos colaboradores estén desactivadas.

Suscríbete a las alertas de seguridad de n8n. El repositorio de GitHub n8n-io/n8n permite suscribirse a notificaciones de seguridad mediante "Watch → Security alerts".

Bug de scheduling tras la versión 2.21.7: síntoma y workaround

El issue de GitHub #31100 documenta un comportamiento reportado tras actualizar a la versión 2.21.7: los workflows con disparadores programados (nodo Schedule Trigger) dejan de ejecutarse en su hora, sin ningún mensaje de error visible en los logs.

Síntoma exacto: los workflows permanecen en estado «activo» en la interfaz, se muestra el próximo tiempo de disparo programado, pero las ejecuciones no tienen lugar. El historial de ejecuciones no muestra ningún intento fallido — los workflows simplemente no se disparan. Este comportamiento se observa principalmente en despliegues en modo cola (multi-worker), con PostgreSQL, pero también puede afectar a instancias de proceso único.

Lo que el issue indica sobre el workaround: en el momento de publicación de este artículo, el issue está marcado como "Needs Feedback" por el equipo de n8n y no se ha publicado ningún workaround oficial documentado en el hilo. Varios operadores han reportado que los siguientes enfoques restauraron las ejecuciones programadas en su entorno:

- Desactivar y luego reactivar manualmente cada workflow afectado desde la interfaz (alternancia Active/Inactive).
- Reiniciar el contenedor o servicio de n8n, lo que fuerza la reinicialización de la cola de programación interna.
- En despliegues en modo cola: reiniciar primero el nodo principal (main), antes que los workers.

Estas acciones no son un fix: el problema puede reproducirse. Monitoriza el issue #31100 para el estado oficial y la versión de corrección.

Identificación rápida de los workflows afectados: en la interfaz de n8n, filtra el historial de ejecuciones por disparador «Schedule» y comprueba la ausencia de ejecuciones durante el período esperado. Un workflow que debería haberse ejecutado diez veces desde medianoche sin ningún rastro en el log es una señal clara.

Verificaciones post-migración: qué controlar antes de reabrir el tráfico

Una actualización exitosa de n8n se confirma en varios ejes, no solo en la versión mostrada.

Versión: la interfaz «About n8n» muestra 1.121.3 o superior. El comando docker inspect sobre la imagen en ejecución devuelve el mismo número.

Integridad de credenciales: n8n cifra las credenciales con una clave derivada de N8N_ENCRYPTION_KEY. Si esta variable no ha cambiado entre versiones, las credenciales existentes están intactas. Abre un workflow que use una conexión externa y verifica que se ejecuta sin errores de descifrado.

Workflows activos: en el dashboard, verifica que el número de workflows activos coincide con el estado previo a la actualización. Un workflow que estaba activo y ya no lo está tras el reinicio es una señal de alerta.

Ejecuciones programadas: si tu instancia usa nodos Schedule Trigger, espera al próximo tiempo de disparo y confirma la ejecución en el log. Si estás en la versión 2.21.7 de la rama 2.x, consulta la sección anterior sobre el bug de scheduling.

Logs de inicio: docker compose logs n8n --tail 50 debe mostrar un arranque limpio sin excepciones. Los errores de conexión a la base de datos o de descifrado de credenciales aparecen en estas primeras líneas.

Acceso de red: si tu instancia está expuesta a través de un proxy inverso, verifica que las rutas /webhook/ y /webhook-test/ respondan correctamente tras la actualización.

Versiones de n8n: exposición a los CVE de la alerta AL26-001

Desplace la tabla

VersiónCVE-2025-68613CVE-2026-21858CVE-2026-21877Acción requerida
< 1.120.4VulnerableVulnerableVulnerableActualizar a ≥ 1.121.3
1.120.4 – 1.120.xCorregidaVulnerableVulnerableActualizar a ≥ 1.121.3
1.121.0 – 1.121.2CorregidaCorregidaVulnerableActualizar a ≥ 1.121.3
≥ 1.121.3CorregidaCorregidaCorregidaSin acción CVE requerida
2.x < 2.21.7Ver release notesVer release notesVer release notesConsultar release notes 2.x
2.21.7+Ver release notesVer release notesVer release notesBug scheduling #31100 activo

Mantener actualizada tu instancia n8n: la vía con VPS

CVE-2026-21877 ilustra el coste de una instancia autoalojada cuya actualización depende de una ventana de mantenimiento externa. En un VPS con acceso root, docker compose pull && docker compose up -d aplica el parche en menos de diez minutos, sin depender de un proveedor para decidir el momento.

Esta autonomía tiene una contrapartida: la vigilancia de advisories de seguridad recae en el operador. Dos fuentes para seguir n8n: el repositorio de GitHub (pestaña Security, notificaciones activables) y las alertas del Centro Canadiense de Ciberseguridad o su equivalente CERT en tu región.

Para profundizar en la configuración de una instancia n8n sólida — instalación inicial, proxy inverso Caddy o nginx, TLS automático y copias de seguridad — consulta la guía instalar n8n en VPS. Si vienes de una instalación npm y estás considerando la migración a Docker antes de pasar a la rama 2.x, la guía migración de npm a Docker antes de v3 cubre ese recorrido. El patrón de parcheo aplicado aquí es idéntico al documentado para CVE-2026-6471 en PostgreSQL.

Un VPS con acceso root para aplicar tus parches cuando tú decides

En un VPS de ServOrbit, `docker compose pull && docker compose up -d` se ejecuta en menos de diez minutos. Sin dependencia de un proveedor para la ventana de mantenimiento.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva