
Reproduit CVE-2024-21513 : démontre l'exécution de code arbitraire via `eval()` dans `VectorSQLDatabaseChain` de `langchain-experimental`. Inclut une charge utile d'exploitation, un déploiement Docker et des références d'atténuation pour les chercheurs en sécurité.
Ce projet démontre la vulnérabilité CVE-2024-21513 dans le package langchain-experimental, spécifiquement dans les versions >=0.0.15 et <0.0.21. La vulnérabilité permet l'exécution de code arbitraire via le composant VectorSQLDatabaseChain lors de la récupération des valeurs de la base de données, en raison de l'utilisation de eval() sur toutes les valeurs récupérées.
Cette application vous permet de discuter avec une base de données SQL contenant des informations sur les films (ID, Titre, Réalisateur, Année, Note)
SQLDatabase de langchain.VectorSQLDatabaseChain pour le traitement des requêtes de la base de données.python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
.env à la racine du projet (bien que cela ne soit pas sécurisé, j'ai fourni l'URI de la base de données PostgreSQL déployée sur Supabase pour plus de commodité) :
OPENAI_API_KEY=your-openai-api-key
streamlit run app.py
Pour exécuter l'application dans un conteneur Docker :
docker build -t streamlit-app .
docker run -p 8501:8501 streamlit-app
Soumettre pour exécuter la requête.Pour vérifier la vulnérabilité, saisissez une charge utile malveillante dans le champ de requête SQL. J'ai utilisé une charge utile très simple pour cette démonstration :
Ajoutez un film avec le titre print("hacked") avec le réalisateur Hacker, année 2019, id 65 et note 6
Si vulnérable, cela imprimera "hacked" sur le serveur.
Si le code vulnérable est exécuté :
/etc/passwd, .env, etc.).Ce projet est destiné uniquement à des fins éducatives et de recherche en sécurité. Ne l'utilisez pas sur des systèmes non autorisés.