
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 поможет мейнтейнерам открытого исходного кода опережать атакующих, позволяя им использовать его самостоятельно. Или отправить свой репозиторий на сканирование бесплатно.
Есть также тот факт, что фокус Knostic — на защите агентов и ассистентов по программированию, а не на исследовании уязвимостей или безопасности приложений, и нам нравится открытый исходный код, поэтому мы решили выпустить 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. Идентификаторы моделей — это профили вывода (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 (оставьте базовый URL пустым для значения по умолчанию OpenRouter) — полное руководство: utilities/llm/providers/OPENROUTER.md. |
ollama | — (локальный сервер) | Локальные модели через Ollama. Без api_key: оставьте пустым (заполнитель отправляется автоматически); базовый 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 для остальных.