
Estudo técnico da vulnerabilidade CVE-2025-68613 no n8n, abrangendo versões afetadas, cenário de exploração em laboratório, análise ofensiva e defensiva, e estratégias de mitigação.
n8n é uma plataforma de automação de fluxos de trabalho usada para integrar sistemas e serviços por meio de fluxos visuais e expressões JavaScript.
CVE-2025-68613 é uma vulnerabilidade crítica de Execução Remota de Código (RCE), com CVSS 9.9, que afeta várias versões do n8n. A falha ocorre no processamento de expressões JavaScript em fluxos de trabalho em versões vulneráveis que não estão devidamente isoladas. Isso permite que usuários autenticados com permissões de edição executem código fora do comportamento esperado da aplicação.
Na prática, essa falha pode ser explorada para executar comandos no servidor onde o n8n está em execução, utilizando os próprios privilégios da aplicação. As versões afetadas variam da 0.211.0 até versões anteriores às correções aplicadas em 1.120.4, 1.121.1 e 1.122.0.
Este repositório documenta tecnicamente a CVE-2025-68613, abordando o contexto da falha, as versões afetadas, a exploração e as medidas de mitigação recomendadas.

| Status | Versão do n8n | Observação |
|---|---|---|
| ❌ Afetada | >= 0.211.0 | Introdução do mecanismo vulnerável |
| ❌ Afetada | < 1.120.4 | Vulnerável até o patch no branch 1.120 |
| ❌ Afetada | < 1.121.1 | Vulnerável até o patch no branch 1.121 |
| ❌ Afetada | < 1.122.0 | Vulnerável até o patch no branch 1.122 |
| ✅ Corrigida | 1.120.4 | Correção oficial aplicada |
| ✅ Corrigida | 1.121.1 | Correção oficial aplicada |
| ✅ Corrigida | >= 1.122.0 | Correção incorporada por padrão |
Recomenda-se atualizar imediatamente para a versão 1.122.0 ou superior.
Para demonstrar a vulnerabilidade, as seguintes condições são necessárias:
A falha ocorre durante a criação e execução de fluxos de trabalho, não antes da autenticação.
O primeiro passo é fazer login na interface web do n8n com um usuário válido.

Esta etapa confirma que o ataque não é anônimo. A vulnerabilidade exige um usuário autenticado.
Após o login, verifique se o usuário tem permissões para criar e editar fluxos de trabalho.

Isso é relevante porque apenas usuários com esse nível de acesso podem inserir expressões dinâmicas nos fluxos de trabalho.
Com o usuário autenticado, crie um novo fluxo de trabalho do zero.

Aqui começa o uso legítimo da funcionalidade do n8n que, em versões vulneráveis, pode ser explorada.
O primeiro nó adicionado ao fluxo de trabalho é o Manual Trigger.

O que este nó faz: Permite a execução manual do fluxo de trabalho, usado como ponto de partida do fluxo.
Neste cenário, ele serve apenas como ponto de entrada para a execução do fluxo de trabalho.
O segundo nó adicionado é o Edit Fields (Set).

O que este nó faz: Este nó permite criar, modificar ou sobrescrever campos de dados dentro do fluxo de trabalho. Ele aceita valores estáticos ou expressões JavaScript avaliadas no momento da execução.
É precisamente neste ponto que a vulnerabilidade se manifesta.
Dentro do campo de valor do nó Edit Fields (Set), insira uma expressão JavaScript envolvida por {{ }}, que é o formato usado pelo n8n para avaliar expressões dinâmicas.

Exemplo de payload:
{{ (function(){
return this.process.mainModule
.require('child_process')
.execSync('id')
.toString()
})() }}
(function(){ ... })(): Define uma função auto-invocada, permitindo encapsular toda a lógica e retornar um valor diretamente para a expressão do fluxo de trabalho.this.process: Acessa o objeto interno process do Node.js, que expõe informações e recursos de tempo de execução.process.mainModule: Permite acessar o módulo principal da aplicação, possibilitando o carregamento de outros módulos internos do Node.js.require('child_process'): Módulo nativo do Node.js que permite criar novos processos no sistema operacional e executar comandos externos.execSync('id'): Executa um comando diretamente no sistema operacional onde o n8n está em execução, utilizando os privilégios do processo da aplicação..toString(): Converte a saída do comando executado em texto, permitindo que o resultado seja exibido na interface do n8n.O resultado exibido confirma que o comando foi executado no sistema operacional utilizando os privilégios do processo do n8n, caracterizando uma Execução Remota de Código (RCE).