Эмуляция противодействия с открытым исходным кодом для AI-агентов и MCP-серверов.
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/Opfor_white%20text.svg" />
<source media="(prefers-color-scheme: light)" srcset="assets/Opfor_black%20text.svg" />
<img src="https://raw.githubusercontent.com/keyvaluesoftwaresystems/agent-opfor/HEAD/assets/Opfor_black%20text.svg" alt="OPFOR" width="250" />
</picture>
</p>
<p align="center">
<strong>Эмуляция противника с открытым исходным кодом для AI-агентов, LLM-приложений и MCP-серверов.</strong><br/>
Тестируйте свой ИИ как настоящий атакующий — из CLI, IDE или расширения браузера, которым может пользоваться любой участник вашей команды.
</p>
<p align="center">
<a href="https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-Apache_2.0-444441?style=flat&labelColor=3d3d3a" alt="License: Apache 2.0"></a>
<a href="https://github.com/KeyValueSoftwareSystems/agent-opfor/stargazers"><img src="https://img.shields.io/github/stars/KeyValueSoftwareSystems/agent-opfor?style=flat&labelColor=3d3d3a&color=444441" alt="GitHub stars"></a>
<a href="https://discord.gg/Sb8xfmrjjW"><img src="https://img.shields.io/badge/Discord-join-5865F2?style=flat&logo=discord&logoColor=white&labelColor=3d3d3a" alt="Discord"></a>
<a href="#evaluator-coverage"><img src="https://img.shields.io/badge/OWASP-LLM%20+%20Agentic%20+%20MCP%20+%20API-185FA5?style=flat&labelColor=3d3d3a" alt="OWASP coverage"></a>
</p>
<p align="center">
<a href="https://trendshift.io/repositories/75655?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-75655" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/75655/daily?language=TypeScript" alt="KeyValueSoftwareSystems%2Fagent-opfor | Trendshift" width="250" height="55"/></a>
</p>
<p align="center">
<a href="https://agentopfor.ai/">Веб-сайт</a> ·
<a href="https://docs.agentopfor.ai">Документация</a> ·
<a href="https://github.com/KeyValueSoftwareSystems/agent-opfor">GitHub</a> ·
<a href="https://chromewebstore.google.com/detail/blkflfeicejfnbecanjaolbllmoobenp">Расширение браузера</a> ·
<a href="https://discord.gg/Sb8xfmrjjW">Discord</a>
</p>
OPFOR расшифровывается как _Opposition Force_ — военный термин, обозначающий подразделение, которое на учениях играет роль противника, чтобы остальная армия узнала, каково это — столкнуться с настоящей атакой до того, как она произойдет. Мы назвали инструмент в честь этой идеи: чтобы лучше защищать ИИ-агентов, нужно сначала атаковать их.
<p align="center">
<img src="https://raw.githubusercontent.com/keyvaluesoftwaresystems/agent-opfor/HEAD/assets/opfor-high-level.svg" alt="Как работает OPFOR" width="860" />
</p>
## Зачем мы это создали
За последние десять лет мы выпустили 130 продуктов для 90 стартапов. За последние 18 месяцев почти каждый из них содержал ИИ-агента — и каждая команда упиралась в одну и ту же стену, когда дело доходило до тестирования.
Поэтому мы построили OPFOR. Сначала для себя. Теперь с открытым исходным кодом.
Apache 2.0. Создано в Индии.
## Быстрый старт
```bash
npm install -g @keyvaluesystems/agent-opfor-cli
export OPENAI_API_KEY=your-key # или GEMINI_API_KEY, ANTHROPIC_API_KEY и т.д.
```
**В один шаг** — запускает мастер настройки и сразу начинает сканирование:
```bash
opfor run
```
**В два шага** — сохраните конфигурацию, которую можно повторно использовать или закоммитить в CI:
```bash
opfor setup # мастер сохраняет конфигурацию в .opfor/configs/
opfor run --config .opfor/configs/<file> # запуск в любое время с сохранённой конфигурацией
```
https://github.com/user-attachments/assets/a6a3cff2-2cf9-4486-944e-ac0163e7ea04
## Что делает opfor
Opfor проверяет полную поверхность ИИ-агента — промпты, инструменты, MCP-серверы, память и многошаговые рассуждения. Он генерирует целевые атаки на основе OWASP LLM Top 10, OWASP Agentic AI Top 10, OWASP MCP Top 10, OWASP API Security и наборов предвзятости EU AI Act, отправляет их на вашу цель и оценивает каждый ответ с помощью LLM.
Большинство инструментов red-teaming в этой области отлично справляются с одной задачей — библиотека зондов, средство оценки для разработчиков, программный фреймворк. Opfor покрывает больше за один инструмент:
- **Расширение браузера для нетехнических специалистов** — любой участник вашей команды может протестировать развернутого чат-бота, без кода, env vars и YAML
- **Запуск opfor как MCP-сервера** — позвольте вашему ИИ-кодеру в Cursor или Claude Desktop атаковать ваших других агентов через естественный язык
- **Полное покрытие OWASP в одном инструменте** — LLM Top 10, Agentic AI Top 10, MCP Top 10, API Security Top 10
- **Без чёрного ящика** — каждый атакующий промпт, запрос, ответ и вердикт судьи логируются; воспроизводимо, проверяемо, форкаемо
- **Создано для агентов, а не только для моделей** — с самого начала спроектировано для вызовов инструментов, MCP, памяти и многошагового состояния
- **С поддержкой трассировки** — интегрируется с Langfuse и Netra, чтобы LLM-судья видел, что ваш агент делал внутри, а не только то, что он сказал
## Пять способов запустить opfor
Разные люди в вашей команде нуждаются в разных точках входа. Opfor предоставляет пять.
| Режим | Как | Для кого |
| ------------------------ | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| 🖥️ **CLI** | `opfor setup` → `opfor run` | Инженеры, CI/CD, терминал-ориентированные рабочие процессы |
| 🌐 **Расширение браузера** | Установите расширение, нажмите на иконку в любом интерфейсе чата | Продукт-менеджеры, дизайнеры, QA, аналитики безопасности — все, кто не может или не хочет писать код |
| 🤖 **MCP-сервер** | Зарегистрируйте opfor в Cursor или Claude Desktop, затем спрашивайте в чате | ИИ-кодеры, тестирующие ваших других агентов |
| ⚡ **Skills** | `/opfor-setup` · `/opfor-run` · `/opfor-mcp-setup` · `/opfor-mcp-run` | Разработчики, которые хотят тестировать одной командой внутри своей IDE |
| 📦 **SDK** | `npm install @keyvaluesystems/agent-opfor-sdk`, затем вызывайте `run` / `hunt` из кода | Программное red-teaming и пользовательские рабочие процессы |
Все пять используют одни и те же оценщики, шаблоны атак и логику судьи.
→ [Справочник CLI](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/cli.md) · [Настройка расширения браузера](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/browser-extension.md) · [Настройка MCP](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/mcp.md) · [Настройка Skills](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/skills.md) · [Справочник SDK](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/sdk.md) · [Обработка сессий](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/sessions.md)
## Как это работает
<p align="center">
<img src="https://raw.githubusercontent.com/keyvaluesoftwaresystems/agent-opfor/HEAD/assets/opfor-execution-flow.svg" alt="Что происходит во время opfor run" width="860" />
</p>
Когда вы запускаете сканирование, opfor:
1. **Получает информацию о цели** — подключается к вашему агенту, обнаруживает доступные инструменты, MCP-эндпоинты, возможности
2. **Планирует атаки по категориям** — генерирует целевые промпты для каждого оценщика в выбранном наборе
3. **Эмулирует атаку** — проводит многошаговые adversarial-диалоги (реальные запросы, реальные ответы)
4. **Оценивает с помощью судьи** — LLM-судья классифицирует каждый ответ как пройден/не пройден с обоснованием
5. **Генерирует отчёт** — HTML для просмотра, JSON для CI/CD, все артефакты логируются для воспроизводимости
Каждый запуск попадает в свою подпапку внутри `.opfor/reports/run-report-<compactTs>-<slug>-<shortId>/`, содержащую `<slug>-report.html` и `<slug>-report.json`. Автономные запуски `opfor hunt` используют ту же структуру в `hunt-report-<compactTs>-<slug>-<shortId>/`.
## Охват оценщиков
Opfor поставляется с курируемыми наборами, соответствующими отраслевым стандартам. Выберите набор или запустите отдельные оценщики.
| ID набора | Стандарт | Фокус |
| ------------------- | -------------------------- | ---------------------------------------------------------------------------- |
| `owasp-llm-top10` | OWASP LLM Top 10 (2025) | Инъекции промптов, джейлбрейки, раскрытие конфиденциальной информации, утечка системного промпта |
| `owasp-agentic-ai` | OWASP Agentic AI Top 10 | Чрезмерная автономия, неправильное использование инструментов, перехват цели агента, отравление памяти |
| `owasp-mcp-top10` | OWASP MCP Top 10 (2025) | Раскрытие секретов, эскалация области, инъекция описания инструментов, SSRF |
| `owasp-api` | OWASP API Security Top 10 | BOLA, BFLA, SQL-инъекции |
| `eu-ai-act-bias` | EU AI Act — Bias | Возраст, пол, раса, инвалидность |
→ [Полный справочник оценщиков и соответствие OWASP](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/evaluators.md)
## Тестирование с поддержкой трассировки
Подключите opfor к вашему стеку observability, и LLM-судья увидит не только финальный ответ, но и каждый вызов инструмента, поиск и промежуточный шаг рассуждения. Из коробки opfor интегрируется с **[Langfuse](https://langfuse.com)** и **[Netra](https://getnetra.ai)**.
```json
"telemetry": {
"provider": "langfuse",
"langfuse": { "baseUrl": "https://cloud.langfuse.com" }
}
```
Это позволяет выявить то, что упускает тестирование по вводу/выводу — PII, просачивающаяся в вызов инструмента, но не доходящая до пользователя, эскалации области в MCP, не изменяющие текст ответа, агенты, извлекающие неавторизованные данные, но выдающие чистый ответ.
→ [Руководство по тестированию с трассировкой](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/telemetry.md)
## Автономный Red-Teaming
`opfor hunt` полностью обходит файл конфигурации. Дайте ему эндпоинт и цель, и мультиагентная система — командир, операторы, разведчик — проведет адаптивную атакующую кампанию самостоятельно: разведка, стратегия, многошаговое зондирование, отчёт. В отличие от `opfor run`, агенты работают только на Claude (через API-ключ Claude, `claude setup-token` или вашу локальную сессию `claude login`) — ваша цель может быть любой.
```bash
opfor hunt \
--endpoint "https://your-agent.com/v1/chat" \
--objective "Найти джейлбрейки, утечки системного промпта и обходы безопасности."
```
Добавьте `--ui`, чтобы наблюдать за деревом атак в живом дашборде.
→ [Полный справочник](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/hunt.md)
## Расширение браузера — red-teaming чат-бота
Расширение браузера — это путь opfor без кода. Установите из Chrome Web Store, откройте любой интерфейс чата, нажмите на иконку opfor, выберите набор и наблюдайте за работой.
https://github.com/user-attachments/assets/80c2692f-b18b-4899-99df-e7eb8d50b02a
Оно автоматически определяет интерфейс чата, отправляет атакующие промпты так, как будто вы их набираете, отслеживает ответы и загружает HTML-отчёт по завершении. Никакого CLI, настройки цели или YAML.
Это путь для половины каждой продуктовой команды, которая не открывает терминал.
→ [Установить из Chrome Web Store](https://chromewebstore.google.com/detail/blkflfeicejfnbecanjaolbllmoobenp) · [Руководство по настройке](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/browser-extension.md)
## SDK — встраивайте red-teaming в свой код
SDK — это программный путь opfor. Установите `@keyvaluesystems/agent-opfor-sdk`, вызывайте `run` или `hunt` и получайте структурированные результаты — без CLI, конфигурационных файлов или подпроцессов.
```typescript
import { Opfor } from "@keyvaluesystems/agent-opfor-sdk";
const opfor = new Opfor({ apiKey: process.env.ANTHROPIC_API_KEY });
const results = await opfor.run({
target: { url: "https://api.example.com/chat" },
suite: "owasp-llm-top10",
});
```
Используйте его в CI, в тестовых наборах или везде, где нужен red-teaming без выхода из TypeScript.
→ [Справочник SDK](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/docs/sdk.md)
## Примеры
| Пример | Описание |
| ---------------------------------------------------- | -------------------------------------------------------------------- |
| [vanilla-chat](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/tests/e2e/agents/vanilla-chat) | Простой чат-бот поддержки — тестирование уязвимостей уровня LLM |
| [customer-support](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/tests/e2e/agents/customer-support)| Агент с вызовом инструментов и PostgreSQL — тестирование BOLA, BFLA, RBAC, PII |
| [vulnerable-server](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/tests/e2e/mcp/vulnerable-server) | Пример MCP-сервера с намеренными уязвимостями |
## Поддерживаемые LLM-провайдеры
| Провайдер | Переменная окружения | Модель по умолчанию |
| --------------- | ------------------------------ | ----------------------------------- |
| Groq | `GROQ_API_KEY` | `llama-3.3-70b-versatile` |
| OpenAI | `OPENAI_API_KEY` | `gpt-4o-mini` |
| Anthropic | `ANTHROPIC_API_KEY` | `claude-3-5-haiku-20241022` |
| Google | `GOOGLE_GENERATIVE_AI_API_KEY` | `gemini-2.0-flash` |
| OpenAI-совместимые | `OPFOR_API_KEY` + `baseURL` | LiteLLM, OpenRouter, Azure, Ollama |
## Участие в разработке
Пожалуйста, прочитайте [CONTRIBUTING.md](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/CONTRIBUTING.md) для получения информации о нашем кодексе поведения и процессе отправки pull request'ов.
## Авторы
Создано командой [KeyValue Software Systems](https://keyvalue.systems). По всем вопросам обращайтесь по адресу [[email protected]](mailto:[email protected]).
## Безопасность
Используйте opfor только на системах, которыми вы владеете или которые уполномочены тестировать. Чтобы сообщить об уязвимости в самом opfor, см. [SECURITY.md](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/SECURITY.md) — не открывайте публичный issue.
## Лицензия
Opfor распространяется под лицензией Apache 2.0 — подробности в файле [LICENSE](https://github.com/keyvaluesoftwaresystems/agent-opfor/blob/master/LICENSE).
---
<p align="center">
Создано с ❤️ командой <a href="https://keyvalue.systems">KeyValue</a>
</p>