
Обнаружение уязвимостей Zero shot с помощью LLMs
Инструмент для выявления удаленно эксплуатируемых уязвимостей с помощью LLM и статического анализа кода.
Первые в мире автономно обнаруженные ИИ 0-day уязвимости
Vulnhuntr использует мощь LLM для автоматического создания и анализа полных цепочек вызовов кода, начиная с удаленного пользовательского ввода и заканчивая выводом сервера, для обнаружения сложных, многошаговых уязвимостей, обходящих защиту, которые выходят далеко за пределы возможностей традиционных инструментов статического анализа кода. Все подробности, включая вывод Vulnhuntr для всех 0-day уязвимостей, см. в блоге: Protect AI Vulnhuntr Blog
[!TIP] Нашли уязвимость с помощью Vulnhuntr? Отправьте отчет на huntr.com, чтобы получить вознаграждение, и отправьте PR, чтобы добавить ее в список ниже!
[!NOTE] Эта таблица — лишь образец найденных на данный момент уязвимостей. Мы будем раскрывать детали по мере завершения периодов ответственного раскрытия.
| Репозиторий | Звёзды | Уязвимости |
|---|---|---|
| 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 строго требует Python 3.10 из-за ряда ошибок в Jedi, используемом для разбора кода Python. При установке с другими версиями Python он не будет работать надежно.
Мы рекомендуем использовать pipx или Docker для простой установки и запуска Vulnhuntr.
С помощью Docker:
docker build -t vulnhuntr https://github.com/protectai/vulnhuntr.git#main
С помощью pipx:
pipx install git+https://github.com/protectai/vulnhuntr.git --python python3.10
Также можно установить напрямую из исходного кода с помощью poetry:
git clone https://github.com/protectai/vulnhuntr
cd vulnhuntr && poetry install
Этот инструмент предназначен для анализа репозитория GitHub на предмет потенциальных удаленно эксплуатируемых уязвимостей. Инструменту требуется ключ API и локальный путь к репозиторию GitHub. При желании вы также можете указать собственную конечную точку для сервиса LLM.
[!CAUTION] Всегда устанавливайте лимиты расходов или внимательно контролируйте затраты при использовании провайдера LLM. Этот инструмент может привести к значительным расходам, так как он пытается уместить как можно больше кода в окно контекста LLM.
[!TIP] Мы рекомендуем использовать Claude в качестве LLM. В ходе тестирования мы получили лучшие результаты с ним по сравнению с 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)
Из установки через pipx, проанализируйте весь репозиторий с помощью Claude:
export ANTHROPIC_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/
[!TIP] Мы рекомендуем указывать Vulnhuntr конкретные файлы, которые обрабатывают удаленный пользовательский ввод, и сканировать их по отдельности.
Из установки через pipx, проанализируйте файл /path/to/target/repo/server.py с помощью GPT-4o. Вместо файла можно указать подкаталог:
export OPENAI_API_KEY="sk-1234"
vulnhuntr -r /path/to/target/repo/ -a server.py -l gpt
Из установки Docker, запустите с помощью Claude и пользовательской конечной точки для анализа /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
Экспериментально
Ollama включен как опция, однако у нас не было успеха с моделями с открытым исходным кодом в правильной структуризации вывода.
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] Как правило, оценки уверенности < 7 означают, что уязвимость маловероятна. Оценки уверенности 7 означают, что ее следует проверить, а оценки 8+ — что уязвимость, скорее всего, является действительной.
Инструмент генерирует подробный отчет об уязвимостях, найденных в проанализированных файлах. Отчет включает:
Ниже приведен примера отчета Vulnhuntr, описывающего 0-day уязвимость удаленного выполнения кода в Ragflow (теперь исправлено):