Correction API
S’assurer que le jeton de réinitialisation n’est JAMAIS retourné dans le corps de la réponse API et qu’il est uniquement envoyé via un email sécurisé.
La CVE-2025-58434 expose un défaut fondamental dans la gestion sécurisée des jetons au sein de FlowiseAI. Cette vulnérabilité permet à un attaquant distant et non authentifié de modifier le mot de passe de n’importe quel compte utilisateur, conduisant à une prise de contrôle totale du compte (Account Takeover - ATO).
La faille provient de la décision du serveur d’inclure le tempToken secret dans le corps de la réponse API. Dans une implémentation sécurisée, ce jeton devrait être transmis exclusivement via un canal hors-bande sécurisé, tel qu’un email vérifié. En contournant le besoin d’accéder à la boîte mail, un attaquant peut automatiser la prise de contrôle de tous les utilisateurs d’une instance.
Cette vulnérabilité est un exemple typique d’Exposition Directe d’Objet Insécurisée (Insecure Direct Object Exposure) et de divulgation d’informations. La logique de réinitialisation du mot de passe est fondamentalement compromise par l’exposition du jeton secret.
L’exploitation suit un chemin linéaire et prévisible via l’API :
Requête non authentifiée → /api/v1/account/forgot-password → Recherche Utilisateur par Email → Génération du Jeton → Réponse API.
À l’étape finale, le backend inclut le tempToken dans la réponse JSON. Cela permet à l’attaquant d’obtenir l’identifiant nécessaire pour autoriser un changement de mot de passe sans jamais posséder les accès email de la victime.
L’attaque utilise deux endpoints spécifiques en chaîne :
/api/v1/account/forgot-password — Cet endpoint accepte un email et retourne le jeton secret./api/v1/account/reset-password — Cet endpoint accepte le jeton volé et un nouveau mot de passe pour finaliser la prise de contrôle.L’exploit est mécanique et ne nécessite aucune interaction de l’utilisateur.
forgot-password avec l’email de la cible.
curl -i -X POST https://<target>/api/v1/account/forgot-password -H "Content-Type: application/json" -d '{"user":{"email":"victim@example.com"}}'tempToken.reset-password, combinant l’email de la victime, le jeton extrait et un nouveau mot de passe.
curl -i -X POST https://<target>/api/v1/account/reset-password -H "Content-Type: application/json" -d '{"user":{"email":"victim@example.com", "tempToken":"<extracted-token>", "password":"AttackerPassword123!"}}'La détection de cette attaque repose sur l’analyse des schémas de trafic API, car l’exploit n’utilise ni malware ni payloads complexes.
Les analystes doivent rechercher les empreintes comportementales suivantes dans les logs du serveur web :
/api/v1/account/forgot-password immédiatement suivie d’un POST vers /api/v1/account/reset-password provenant de la même adresse IP source.201 Created pour l’endpoint forgot-password, indicateur principal d’une fuite de jeton réussie.Un compromis peut être confirmé en inspectant la base de données utilisateur :
tempToken généré puis immédiatement marqué comme utilisé ou expiré en quelques secondes.La règle suivante détecte la phase initiale de la tentative de prise de contrôle.
title: FlowiseAI Unauthenticated Account Takeover Attemptid: 2025-58434-flowise-atodescription: Detects potential account takeover attempts via the CVE-2025-58434 password reset flaw.logsource: category: http_serverdetection: selection: url|contains: '/api/v1/account/forgot-password' method: 'POST' condition: selectionlevel: highPour identifier des attaquants scannant plusieurs comptes :
index=web_logs method="POST" uri="/api/v1/account/forgot-password" | stats count by src_ip, uri_path
Cibler les IP sources qui sollicitent cet endpoint plusieurs fois pour des emails différents dans un court intervalle.
La mise à jour immédiate de FlowiseAI vers la dernière version est mandatory.
Correction API
S’assurer que le jeton de réinitialisation n’est JAMAIS retourné dans le corps de la réponse API et qu’il est uniquement envoyé via un email sécurisé.
Limitation de débit
Implémenter un rate limiting strict sur l’endpoint /forgot-password pour empêcher l’énumération massive de jetons.
Monitoring
Alerter sur les transitions rapides entre une demande de réinitialisation et une mise à jour du mot de passe provenant de la même IP.