OpenAnt от Knostic — ведущий продукт с открытым исходным кодом для обнаружения уязвимостей на основе LLM, помогающий защитникам proactively находить подтверждённые дефекты безопасности, минимизируя как ложноположительные, так и ложноотрицательные срабатывания. Этап 1 обнаруживает. Этап 2 атакует. Что выживает — реально.
OpenAnt от Knostic — это первый открытый продукт для поиска уязвимостей на основе LLM (сейчас такие продукты называют harness), который помогает защитникам проактивно находить подтверждённые уязвимости, минимизируя как ложные срабатывания, так и пропуски. Этап 1 обнаруживает. Этап 2 атакует. Реальным остаётся то, что выжило.
Учтите, что проект начинался как исследовательский, и по мере разработки новых возможностей мы часто выпускаем их в статусе бета. Мы приветствуем вклад сообщества.
Нашу исследовательскую статью о создании OpenAnt можно найти на arXiv: OpenAnt: LLM-Powered Vulnerability Discovery Through Code Decomposition, Adversarial Verification, and Dynamic Testing, авторы Nahum Korda и Gadi Evron.
Это был актуальный вопрос в readme, когда мы впервые выпустили OpenAnt, поскольку к тому моменту было выпущено множество других harness. Мы по-прежнему надеемся, что с взрывным ростом числа уязвимостей, обнаруживаемых ИИ, OpenAnt поможет мейнтейнерам open source-проектов опережать атакующих, поскольку они смогут использовать его сами. Или отправить свой репозиторий на сканирование бесплатно.
Есть и ещё один факт: фокус Knostic — защита агентов и ассистентов для написания кода, а не исследование уязвимостей или безопасность приложений, и нам нравится open source, поэтому мы решили выпустить OpenAnt под лицензией Apache 2. Кроме того, вы могли слышать об Aardvark от OpenAI (теперь Codex Security) и Claude Code Security от Anthropic, и мы совершенно не намерены с ними конкурировать.
Технические детали, ограничения и стоимость токенов описаны в этом посте блога: https://knostic.ai/blog/openant
Чтобы отправить свой репозиторий на сканирование: https://knostic.ai/blog/oss-scan
Мейнтейнер и исследования: Gadi Evron
Исходные исследования, идея и первоначальный прототип: Nahum Korda. Первоначальная продуктовая реализация: Alex Raihelgaus, Daniel Geyshis.
С благодарностью: Michal Kamensky, Imri Goldberg, Daniel Cuthbert. Josh Grossman, и Avi Douglen.
Если вам нравится наша работа, посмотрите, чем мы занимаемся в Knostic, чтобы защищать ваших агентов и ассистентов для написания кода, не давать им удалить ваш жёсткий диск и код, а также контролировать связанные риски цепочки поставок, такие как MCP-серверы, расширения и skills.
Соберите бинарник CLI (требуется Go 1.25+):
cd apps/openant-cli && make build
Эта команда компилирует исходный код на Go и помещает бинарник в apps/openant-cli/bin/openant.
Создайте символическую ссылку в вашем PATH, чтобы можно было запускать openant из любого места:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
Примечание: запускайте это из корня репозитория, чтобы $(pwd) разрешался в правильный абсолютный путь.
OpenAnt направляет каждую фазу пайплайна через настраиваемую пару (провайдер, модель). Самый быстрый путь — интерактивный мастер:
openant setup llm
Вы задаёте имя конфигурации (например, my-llm), выбираете провайдера для каждой фазы пайплайна (любой из поставляемых адаптеров ниже), вводите его API-ключ один раз на провайдера (Bedrock вместо этого использует цепочку учётных данных AWS — оставьте ключ пустым), и мастер проверяет каждую уникальную пару провайдер+модель запросом на 1 токен, прежде чем записать ~/.config/openant/config.json. Запустите сканирование с ней через --llm-config:
openant scan /path/to/repo --llm-config my-llm
Значения по умолчанию в мастере отражают рекомендации проекта для каждой фазы (более сильные модели рассуждения для обнаружения / верификации / анализа достижимости; более лёгкие модели для контекста, отчёта и генерации тестов) — переопределяйте любой ответ по своему усмотрению.
| Тип провайдера | API-ключ откуда | Примечания |
|---|---|---|
anthropic | console.anthropic.com | Эталонный адаптер. НЕ входит в подписки Claude Pro / Max — отдельная оплата. |
openai | platform.openai.com | НЕ входит в подписки ChatGPT / Codex — отдельная оплата. |
google | aistudio.google.com | НЕ входит в Gemini Advanced — отдельная оплата. |
bedrock | — (цепочка учётных данных AWS) | Claude на AWS Bedrock. Без api_key: учётные данные берутся из переменных окружения AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY или профиля ~/.aws, регион из AWS_REGION. Идентификаторы моделей — это inference-профили (us.anthropic.claude-sonnet-4-6, global.anthropic.claude-haiku-4-5-20251001-v1:0, ...) — включите их в разделе "Model access" в консоли Bedrock и выведите список командой aws bedrock list-inference-profiles. Предлагается в openant setup llm (оставьте API-ключ пустым — цепочка учётных данных AWS, проверка пропускается) — полное руководство: utilities/llm/providers/BEDROCK.md. |
openrouter | openrouter.ai | Шлюз ко многим провайдерам с одним ключом и одним предоплаченным балансом (также читает OPENROUTER_API_KEY). Идентификаторы моделей — это слаги vendor/model (anthropic/claude-sonnet-4.6, openai/gpt-4o-mini, ...) — просматривайте их на openrouter.ai/models. Предлагается в openant setup llm (оставьте base URL пустым для значения по умолчанию OpenRouter) — полное руководство: utilities/llm/providers/OPENROUTER.md. |
ollama | — (локальный сервер) | Локальные модели через Ollama. Без api_key: оставьте пустым (заглушка отправляется автоматически); base URL по умолчанию http://localhost:11434/v1. Модели нужно сначала загрузить (ollama pull <model>); идентификаторы моделей — ровно то, что показывает ollama list. Локальный инференс бесплатен — отчётность о стоимости $0. Предлагается в openant setup llm — полное руководство: utilities/llm/providers/OLLAMA.md. |
Все они поддерживают вызов инструментов, поэтому любой из них может управлять фазами enhance и verify, которые используют агентный цикл работы с инструментами. Для Ollama выбирайте модель с поддержкой инструментов для этих фаз — очень маленькие локальные модели могут не справляться с вызовами инструментов надёжно.
Если вам нужны сегодняшние значения по умолчанию Claude для каждой фазы и ничего больше, пропустите мастер:
openant set-api-key sk-ant-...
openant scan /path/to/repo
Это использует встроенную конфигурацию openant-default (скомпилирована в бинарник, config.json не нужен) — Claude Opus 4.6 для фаз обнаружения, Sonnet 4 для остальных.