
Découverte de vulnérabilités zero-shot à l'aide de LLMs
Un outil pour identifier les vulnérabilités exploitables à distance à l'aide des LLM et de l'analyse statique de code.
Les premières vulnérabilités 0day au monde découvertes de manière autonome par une IA
Vulnhuntr exploite la puissance des LLM pour créer et analyser automatiquement des chaînes d'appels de code complètes, depuis l'entrée utilisateur distante jusqu'à la sortie serveur, afin de détecter des vulnérabilités complexes, multi-étapes et contournant la sécurité qui vont bien au-delà de ce que les outils traditionnels d'analyse statique de code sont capables de faire. Consultez tous les détails, y compris la sortie de Vulnhuntr pour toutes les 0day, ici : Blog Protect AI Vulnhuntr
[!TIP] Vous avez trouvé une vulnérabilité avec Vulnhuntr ? Soumettez un rapport sur huntr.com pour obtenir $$ et soumettez une PR pour l'ajouter à la liste ci-dessous !
[!NOTE] Ce tableau n'est qu'un échantillon des vulnérabilités trouvées jusqu'à présent. Nous lèverons les caviardages au fur et à mesure que les périodes de divulgation responsable se termineront.
| Dépôt | Étoiles | Vulnérabilités |
|---|---|---|
| gpt_academic | 67k | LFI, XSS |
| ComfyUI | 66k | XSS |
| Langflow | 46k | RCE, IDOR |
| FastChat | 37k | SSRF |
| Ragflow | 31k | RCE |
| LLaVA | 21k | SSRF |
| gpt-researcher | 17k | AFO |
| Letta | 14k | AFO |
[!IMPORTANT] Vulnhuntr exige strictement Python 3.10 en raison d'un certain nombre de bugs dans Jedi, qu'il utilise pour analyser le code Python. Il ne fonctionnera pas de manière fiable s'il est installé avec d'autres versions de Python.
Nous recommandons d'utiliser pipx ou Docker pour installer et exécuter facilement Vulnhuntr.
Avec Docker :
docker build -t vulnhuntr https://github.com/protectai/vulnhuntr.git#main
Avec pipx :
pipx install git+https://github.com/protectai/vulnhuntr.git --python python3.10
Vous pouvez également installer directement depuis la source avec poetry :
git clone https://github.com/protectai/vulnhuntr
cd vulnhuntr && poetry install
Cet outil est conçu pour analyser un dépôt GitHub à la recherche de vulnérabilités potentiellement exploitables à distance. L'outil nécessite une clé API et le chemin local d'un dépôt GitHub. Vous pouvez également spécifier facultativement un point de terminaison personnalisé pour le service LLM.
[!CAUTION] Définissez toujours des limites de dépenses ou surveillez de près les coûts auprès du fournisseur LLM que vous utilisez. Cet outil peut générer des factures élevées, car il essaie d'insérer autant de code que possible dans la fenêtre de contexte du LLM.
[!TIP] Nous recommandons d'utiliser Claude comme LLM. Lors de nos tests, nous avons obtenu de meilleurs résultats avec lui qu'avec GPT.
usage: vulnhuntr [-h] -r ROOT [-a ANALYZE] [-l {claude,gpt,ollama}] [-v]
Analyze a GitHub project for vulnerabilities. Export your ANTHROPIC_API_KEY/OPENAI_API_KEY before running.
options:
-h, --help show this help message and exit
-r ROOT, --root ROOT Path to the root directory of the project
-a ANALYZE, --analyze ANALYZE
Specific path or file within the project to analyze
-l {claude,gpt,ollama}, --llm {claude,gpt,ollama}
LLM client to use (default: claude)
-v, --verbosity Increase output verbosity (-v for INFO, -vv for DEBUG)
Depuis une installation pipx, analysez l'intégralité du dépôt avec Claude :
export ANTHROPIC_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/
[!TIP] Nous recommandons de donner à Vulnhuntr des fichiers spécifiques qui gèrent les entrées utilisateur distantes et de les analyser individuellement.
Depuis une installation pipx, analysez le fichier /path/to/target/repo/server.py avec GPT-4o. Vous pouvez également spécifier un sous-répertoire au lieu d'un fichier :
export OPENAI_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/ -a server.py -l gpt
Depuis une installation Docker, exécutez avec Claude et un point de terminaison personnalisé pour analyser /local/path/to/target/repo/repo-subfolder/target-file.py :
docker run --rm -e ANTHROPIC_API_KEY=sk-1234 -e ANTHROPIC_BASE_URL=https://localhost:1234/api -v /local/path/to/target/repo:/repo vulnhuntr:latest -r /repo -a repo-subfolder/target-file.py
Expérimental
Ollama est inclus en option ; cependant, nous n'avons pas réussi avec les modèles open source à structurer correctement leur sortie.
export OLLAMA_BASE_URL=http://localhost:11434/api/generate
export OLLAMA_MODEL=llama3.2
vulnhuntr -r /path/to/target/repo/ -a server.py -l ollama

[!TIP] En général, des scores de confiance < 7 signifient qu'une vulnérabilité est peu probable. Un score de confiance de 7 signifie qu'il faut enquêter, et un score de 8 ou plus signifie qu'il s'agit très probablement d'une vulnérabilité valide.
L'outil génère un rapport détaillé des vulnérabilités trouvées dans les fichiers analysés. Le rapport comprend :
Voici un exemple de rapport Vulnhuntr décrivant une vulnérabilité d'exécution de code à distance 0day dans Ragflow (désormais corrigée) :