
Zero shot Schwachstellenentdeckung mithilfe von LLMs
Ein Tool zur Identifizierung remote ausnutzbarer Schwachstellen mithilfe von LLMs und statischer Codeanalyse.
Erste autonome KI-entdeckte 0-Day-Schwachstellen der Welt
Vulnhuntr nutzt die Leistungsfähigkeit von LLMs, um automatisch vollständige Code-Aufrufketten zu erstellen und zu analysieren, die von entfernten Benutzereingaben bis zur Serverausgabe reichen. Dadurch werden komplexe, mehrstufige, sicherheitsumgehende Schwachstellen erkannt, die weit über das hinausgehen, was traditionelle statische Codeanalysetools leisten können. Alle Details einschließlich der Vulnhuntr-Ausgabe für alle 0-Days finden Sie hier: Protect AI Vulnhuntr Blog
[!TIP] Eine Schwachstelle mit Vulnhuntr gefunden? Reichen Sie einen Bericht bei huntr.com ein, um $$ zu erhalten, und reichen Sie einen PR ein, um sie zur folgenden Liste hinzuzufügen!
[!NOTE] Diese Tabelle ist nur ein Beispiel der bisher gefundenen Schwachstellen. Wir werden die Informationen nach Ablauf der verantwortungsvollen Offenlegungsfristen freigeben.
| Repository | Sterne | Schwachstellen |
|---|---|---|
| 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 erfordert ausdrücklich Python 3.10 aufgrund einer Reihe von Fehlern in Jedi, das zum Parsen von Python-Code verwendet wird. Bei Installation mit anderen Python-Versionen funktioniert es nicht zuverlässig.
Wir empfehlen die Verwendung von pipx oder Docker, um Vulnhuntr einfach zu installieren und auszuführen.
Verwendung mit Docker:
docker build -t vulnhuntr https://github.com/protectai/vulnhuntr.git#main
Verwendung mit pipx:
pipx install git+https://github.com/protectai/vulnhuntr.git --python python3.10
Alternativ können Sie es direkt aus dem Quellcode mit poetry installieren:
git clone https://github.com/protectai/vulnhuntr
cd vulnhuntr && poetry install
Dieses Tool dient zur Analyse eines GitHub-Repositorys auf potenziell remote ausnutzbare Schwachstellen. Das Tool benötigt einen API-Schlüssel und den lokalen Pfad zu einem GitHub-Repository. Optional können Sie auch einen benutzerdefinierten Endpunkt für den LLM-Dienst angeben.
[!CAUTION] Legen Sie immer Ausgabenlimits fest oder überwachen Sie die Kosten genau bei dem von Ihnen verwendeten LLM-Anbieter. Dieses Tool kann hohe Kosten verursachen, da es versucht, so viel Code wie möglich in den Kontextfenster des LLMs unterzubringen.
[!TIP] Wir empfehlen die Verwendung von Claude als LLM. In Tests haben wir damit bessere Ergebnisse erzielt als mit 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)
Bei einer pipx-Installation das gesamte Repository mit Claude analysieren:
export ANTHROPIC_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/
[!TIP] Wir empfehlen, Vulnhuntr bestimmte Dateien zu übergeben, die Remote-Benutzereingaben verarbeiten, und diese einzeln zu scannen.
Bei einer pipx-Installation die Datei /path/to/target/repo/server.py mit GPT-4o analysieren. Es kann auch ein Unterverzeichnis anstelle einer Datei angegeben werden:
export OPENAI_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/ -a server.py -l gpt
Bei einer Docker-Installation mit Claude und einem benutzerdefinierten Endpunkt ausführen, um /local/path/to/target/repo/repo-subfolder/target-file.py zu analysieren:
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
Experimentell
Ollama ist als Option enthalten, jedoch hatten wir mit Open-Source-Modellen keinen Erfolg bei der korrekten Strukturierung ihrer Ausgaben.
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] Im Allgemeinen deuten Konfidenzwerte < 7 darauf hin, dass wahrscheinlich keine Schwachstelle vorliegt. Konfidenzwerte von 7 sollten untersucht werden, und Konfidenzwerte von 8+ bedeuten, dass es sich sehr wahrscheinlich um eine gültige Schwachstelle handelt.
Das Tool erstellt einen detaillierten Bericht über die in den analysierten Dateien gefundenen Schwachstellen. Der Bericht umfasst:
Nachfolgend ein Beispiel eines Vulnhuntr-Berichts, der eine 0-Day-Remote-Code-Execution-Schwachstelle in Ragflow (inzwischen behoben) beschreibt: