by Protect AI (open source) GPT, Claude, Ollama, Python
AI-агент для статического анализа, автоматически находящий сложные, многошаговые уязвимости удалённой эксплуатации (RCE, SSRF, SQLi, XSS, LFI и др.) в Python-репозиториях. В отличие от классических SAST-сканеров, трассирует путь пользовательского ввода от точки входа до потенциально опасного sink через весь проект, используя LLM (Claude/GPT/Ollama) для пошагового рассуждения о потоке данных. Уже находил реальные 0-day в популярных open-source проектах.
AI-IDE от Codeium с концепцией "agentic IDE". Главная фича — Cascade: агент который понимает весь контекст …
SKILL.md-инструкция для AI-агентов: автоматическое закрытие GitHub issues. 6-фазный воркфлоу: фильтрация issues → проверка веток → параллельный …
SKILL.md-инструкция для AI-агентов: управление GitHub через CLI — создание PR и issue, работа с ветками, запуск …
SKILL.md-инструкция для AI-агентов: работа с Google Workspace из терминала — Gmail, Calendar, Docs, Sheets, Drive через …
# Claude Desktop / Claude Code / OpenCode — Vulnhuntr работает как автономный # CLI-агент поверх LLM-бэкенда, не как MCP-сервер: git clone https://github.com/protectai/vulnhuntr cd vulnhuntr pipx install . export ANTHROPIC_API_KEY=sk-... vulnhuntr -r /path/to/target/repo
Инструмент для выявления удалённо эксплуатируемых уязвимостей с использованием LLM и статического анализа кода.
Первые в мире автономно обнаруженные ИИ уязвимости нулевого дня (0day)
Vulnhuntr использует возможности LLM для автоматического создания и анализа полных цепочек вызовов кода, начиная с удалённого пользовательского ввода и заканчивая выводом на сервере, для обнаружения сложных, многоэтапных уязвимостей, обходящих механизмы безопасности, которые выходят далеко за рамки возможностей традиционных инструментов статического анализа кода. Подробности, включая вывод Vulnhuntr для всех уязвимостей нулевого дня, можно найти здесь: Блог Protect AI Vulnhuntr
[!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
Вот переведённый фрагмент README инструмента «Vulnhuntr» на русский язык:
[!TIP] Обычно оценки уверенности < 7 означают, что уязвимость маловероятна. Оценки уверенности 7 означают, что её следует изучить, а оценки 8+ означают, что это, скорее всего, действительная уязвимость.
Инструмент генерирует подробный отчёт об уязвимостях, найденных в проанализированных файлах. Отчёт включает:
Ниже приведён пример отчёта Vulnhuntr, описывающего уязвимость нулевого дня для удалённого выполнения кода в Ragflow (исправлено):
scratchpad:
1. Analyzing the add_llm function in llm_app.py. 2. Identified user input used as keys to access dictionaries: EmbeddingModel, ChatModel, RerankModel,
CvModel, and TTSModel. 3. These dictionaries contain class references, which are instantiated with user-supplied parameters. 4. The factory variable is
directly used from user input (req['llm_factory']) without proper validation. 5. The llm_name is also derived from user input in most cases. 6. The
instantiation of these classes occurs in try-except blocks, but exceptions are only used for error messages, not preventing execution. 7. The api_key
and other sensitive information are passed directly to these instantiated classes. 8. There's no comprehensive input validation or sanitization for the
factory or llm_name variables. 9. The vulnerability is in a route decorated with @login_required, indicating it's accessible to authenticated users. 10.
Reviewing the EmbeddingModel, ChatModel, RerankModel, CvModel, and TTSModel dictionaries to understand their contents and potential for exploitation.
----------------------------------------
analysis:
The add_llm function in llm_app.py contains a critical Remote Code Execution (RCE) vulnerability. The function uses user-supplied input
(req['llm_factory'] and req['llm_name']) to dynamically instantiate classes from the EmbeddingModel, ChatModel, RerankModel, CvModel, and TTSModel
dictionaries. This pattern of using user input as a key to access and instantiate classes is inherently dangerous, as it allows an attacker to
potentially execute arbitrary code. The vulnerability is exacerbated by the lack of comprehensive input validation or sanitization on these
user-supplied values. While there are some checks for specific factory types, they are not exhaustive and can be bypassed. An attacker could potentially
provide a malicious value for 'llm_factory' that, when used as an index to these model dictionaries, results in the execution of arbitrary code. The
vulnerability is particularly severe because it occurs in a route decorated with @login_required, suggesting it's accessible to authenticated users,
which might give a false sense of security.
----------------------------------------
poc:
POST /add_llm HTTP/1.1
Host: target.com
Content-Type: application/json
Authorization: Bearer <valid_token>
{
"llm_factory": "__import__('os').system",
"llm_name": "id",
"model_type": "EMBEDDING",
"api_key": "dummy_key"
}
This payload attempts to exploit the vulnerability by setting 'llm_factory' to a string that, when evaluated, imports the os module and calls system.
The 'llm_name' is set to 'id', which would be executed as a system command if the exploit is successful.
----------------------------------------
confidence_score:
8
----------------------------------------
vulnerability_types:
- RCE
----------------------------------------
Инструмент сохраняет процесс анализа и результаты в файл с именем vulhuntr.log. Этот файл содержит подробную информацию о каждом этапе анализа, включая первоначальную и вторичную оценки.