
MCP-сервер для структурированного моделирования угроз на основе STRIDE с автоматической проверкой кода, анализом бизнес-контекста и созданием подробных отчётов в форматах Markdown и JSON.
Сервер MCP (Model Context Protocol) для комплексного моделирования угроз с автоматической валидацией кода.
Этот сервер предоставляет инструменты для моделирования угроз, включая анализ бизнес-контекста, анализ архитектуры, анализ субъектов угроз, анализ границ доверия, анализ потоков активов, проверку безопасности кода и формирование комплексных отчётов.
Данный MCP-сервер обращается к существующей LLM агента вместо выполнения внешнего API- или сетевого вызова к другому сервису. Он использует LLM клиента, которым может быть Amazon-Q, Kiro или Cline.
Этот MCP-сервер моделирования угроз имеет три основные функции:
Также доступны инструменты для генерации итогового отчёта в форматах Markdown и JSON (экспортируемых).
.threatmodel, и вы можете развивать модель угроз по мере развития кода, дизайна и архитектуры.Примечание: Перед использованием этих подсказок необходимо сначала выполнить процедуру установки, чтобы настроить MCP-сервер.
"Threat model this project using the threat modeling MCP Server"
Конкретизация в подсказке об использовании MCP-сервера для моделирования угроз гарантирует, что клиент (Cline/Kiro и т.д.) будет следовать точным этапам и методологии, а не срезать путь и вносить галлюцинации в результаты.
### Моделирование угроз для подпроекта или сужение области до подпапки```
"Threat model this subfolder using the threat modeling MCP Server"
Запуск на подпапке ограничит область модели угроз и кода этой подпапкой, а также сохранит результаты в виде каталога .threatmodel внутри этой подпапки.
"Save the threat model report"
### Проверьте полноту процесса моделирования угроз```
"Please complete all the phases in the threat model plan and then generate the final report."
"Threat model this project using the threat model MCP server and consider this architecture_image.png attached for this review"
### Попытка устранения угроз```
"Can you see if you can implement mitigation controls in the code based on the threats reported in the threat model"
"Can you updated the threat model based on the code fixes which mitigated the reported threats"
### Больше примеров```bash
# Set up context
"Set business context for an e-commerce payment system"
# Add architecture
"Add a web server component using AWS EC2"
"Add a database component using AWS RDS"
# Identify threats
"Add a threat where an attacker with network access performs SQL injection"
# Add mitigations
"Add a mitigation for input validation"
# Export results
"Export the threat model to my_model.json"
Перед установкой Threat Modeling MCP Server убедитесь, что выполнены следующие требования:
uvx из Astral или GitHub README
uvx --versionПосле установки и проверки работы uvx добавьте приведённую ниже конфигурацию в ваш файл конфигурации mcp.json. В зависимости от типа используемого клиента (kiro/cline/amazon-q) расположение этого mcp.json будет разным. После добавления конфигурации и перезапуска IDE Threat Modeling MCP Server будет автоматически установлен непосредственно из этого репозитория GitHub с помощью uvx.
Примечание: Инструменты, используемые этим MCP-сервером для моделирования угроз, уже добавлены в
autoApproveдля удобства работы пользователей, что обеспечивает бесперебойную работу без ручных запросов на подтверждение каждого вызова инструмента. Все инструменты являются внутренними для сервера и не выполняют внешних вызовов API. Если вы хотите просматривать каждый инструмент и подтверждать его при каждом вызове, замените массив autoApprove на:"autoApprove": []
Добавьте следующее в конфигурацию вашего MCP-клиента:
Для Amazon Q (~/.aws/amazonq/mcp.json):```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
**Для VSCode Cline**:```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"],
"timeout": 60,
"type": "stdio"
}
}
}
Для Kiro (~/.kiro/settings/mcp.json):```json
{
"mcpServers": {
"threat-modeling-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/awslabs/threat-modeling-mcp-server.git",
"threat-modeling-mcp-server"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR"
},
"disabled": false,
"autoApprove": ["add_asset","add_assumption","add_component","add_component_to_zone","add_conn_to_crossing","add_connection","add_crossing_point","add_data_store","add_flow","add_mitigation","add_threat","add_threat_actor","add_trust_boundary","add_trust_zone","advance_phase","analyze_threat_actors","clear_architecture","clear_asset_flows","clear_business_context","clear_threat_actors","clear_trust_boundaries","delete_asset","delete_assumption","delete_component","delete_connection","delete_crossing_point","delete_data_store","delete_flow","delete_mitigation","delete_threat","delete_threat_actor","delete_trust_boundary","delete_trust_zone","execute_code_validation_step","execute_final_export_step","export_comprehensive_threat_model","export_threat_model_with_remediation_status","follow_threat_modeling_plan","generate_remediation_report","get_architecture_analysis_plan","get_asset","get_asset_flow_analysis_plan","get_assumption","get_business_context","get_business_context_analysis_plan","get_business_context_features","get_crossing_point","get_current_phase_status","get_data_model_types","get_flow","get_mitigation","get_phase_1_guidance","get_phase_2_guidance","get_phase_3_guidance","get_phase_4_guidance","get_phase_5_guidance","get_phase_6_guidance","get_phase_7_5_guidance","get_phase_7_guidance","get_phase_8_guidance","get_phase_9_guidance","get_threat","get_threat_actor","get_threat_model_progress","get_threat_modeling_plan","get_trust_boundary","get_trust_boundary_analysis_plan","get_trust_boundary_detection_plan","get_trust_zone","link_mitigation_to_threat","list_assets","list_assumptions","list_components","list_connections","list_crossing_points","list_data_models","list_data_stores","list_flows","list_mitigations","list_threat_actors","list_threats","list_trust_boundaries","list_trust_zones","remove_component_from_zone","remove_conn_from_crossing","reset_asset_flows","reset_threat_actors","set_business_context","set_threat_actor_priority","set_threat_actor_relevance","unlink_mitigation_from_threat","update_asset","update_assumption","update_component","update_connection","update_crossing_point","update_data_store","update_flow","update_mitigation","update_threat","update_threat_actor","update_trust_boundary","update_trust_zone","validate_business_context_completeness","validate_security_controls","validate_threat_model_against_code","validate_threat_remediation"]
}
}
}
### Запуск с помощью Kiro CLI
Для запуска MCP-сервера через `kiro-cli` с автоматическим одобрением всех инструментов:```bash
kiro-cli chat --trust-tools="@threat-modeling-mcp-server/*"
Это доверяет всем инструментам MCP-сервера threat-modeling-mcp-server, поэтому вас не будут запрашивать подтверждение каждого вызова инструмента по отдельности.
Этот репозиторий включает предварительно настроенного агента Kiro CLI, который обеспечивает направленный процесс моделирования угроз из 9 фаз. Конфигурация агента находится в .kiro/agents/threat-modeler.json.
Глобальная установка (доступна из любой директории):```bash ./install-kiro-agent.sh
Для удаления: `./install-kiro-agent.sh --remove`
**Локальная установка** (для конкретного проекта):```bash
cp -r /path/to/threat-modeling-mcp-server/.kiro /path/to/your-project/.kiro
Использование:```bash
kiro-cli chat --agent threat-modeler --no-interactive "Threat model this project"
kiro-cli chat --agent threat-modeler
**Что включает агент**:
- **Системный промпт** (`.kiro/prompts/threat-modeler.md`): Подробные инструкции для 9-фазной методологии STRIDE
- **Навыки** (`.kiro/skills/`): Справочные материалы для каждой из 9 фаз моделирования угроз
- **Инструменты MCP с автоутверждением**: Все инструменты моделирования угроз запускаются без запросов на утверждение
## Управление выходными файлами
Все выходные файлы, созданные сервером моделирования угроз, автоматически сохраняются в каталог `.threatmodel` в корне вашего проекта. Сюда входят:
- Экспортированные модели угроз (формат JSON)
- Отчёты о валидации
- Результаты анализа
Каталог `.threatmodel` создаётся автоматически по мере необходимости.
## Быстрое руководство
### Основные инструменты для начала работы
| Инструмент | Назначение | Пример использования |
|------------|------------|----------------------|
| `get_threat_modeling_plan()` | Получить исчерпывающий план | Начать отсюда для общего обзора |
| **`get_phase_1_guidance()`** | **Получить сфокусированное руководство по Фазе 1** | **Рекомендуемая отправная точка** |
| `get_current_phase_status()` | Проверить прогресс | Отслеживать статус выполнения |
| `set_business_context(desc)` | Определить контекст системы | "Платёжная система электронной коммерции" |
| `add_component(name, type)` | Добавить компонент архитектуры | "API Gateway", "Network" |
| `add_threat(source, prereq, action, impact)` | Определить угрозу | "Атакующий", "доступ к сети", "SQL-инъекция", "утечка данных" |
| `add_mitigation(content)` | Добавить средство противодействия | "Валидация входных данных и параметризованные запросы" |
| `link_mitigation_to_threat(m_id, t_id)` | Связать средства с угрозами | Соединить средства противодействия с конкретными угрозами |
| **`execute_code_validation_step()`** | **Автовыполнение Фазы 7.5** | **Гарантирует завершение валидации кода** |
| **`execute_final_export_step()`** | **Автовыполнение Фазы 9** | **Генерирует все необходимые файлы** |
### 🚀 Пошаговое руководство
**Рекомендуемый подход**: Используйте инструменты пошагового руководства для конкретных фаз вместо исчерпывающего плана:
| Фаза | Инструмент | Назначение |
|------|------------|------------|
| 1 | `get_phase_1_guidance()` | Анализ бизнес-контекста |
| 2 | `get_phase_2_guidance()` | Анализ архитектуры |
| 3 | `get_phase_3_guidance()` | Анализ угрозных субъектов |
| 4 | `get_phase_4_guidance()` | Анализ границ доверия |
| 5 | `get_phase_5_guidance()` | Анализ потоков активов |
| 6 | `get_phase_6_guidance()` | Выявление угроз |
| 7 | `get_phase_7_guidance()` | Планирование противодействий |
| 7.5 | `execute_code_validation_step()` | Валидация кода (авто) |
| 8 | `get_phase_8_guidance()` | Анализ остаточных рисков |
| 9 | `execute_final_export_step()` | Финальный экспорт (авто) |
## Обзор инструментов
Сервер моделирования угроз Threat Modeling MCP Server предоставляет **более 100 инструментов**, сгруппированных по следующим категориям:
| Категория | Инструменты | Описание |
|-----------|-------------|----------|
| **План моделирования угроз** | 1 инструмент | Генерация исчерпывающих планов моделирования угроз |
| **Управление допущениями** | 5 инструментов | Добавление, перечисление, получение, обновление и удаление допущений |
| **Анализ бизнес-контекста** | 13 инструментов | Анализ бизнес-контекста и требований |
| **Анализ архитектуры** | 13 инструментов | Документирование и анализ системной архитектуры |
| **Анализ угрозных субъектов** | 10 инструментов | Выявление и анализ потенциальных угрозных субъектов |
| **Анализ границ доверия** | 18 инструментов | Анализ зон доверия, границ и точек пересечения |
| **Обнаружение границ доверия** | 1 инструмент | Обнаружение границ доверия на базе ИИ |
| **Анализ потоков активов** | 12 инструментов | Отслеживание и анализ потоков активов через систему |
| **Генерация угроз** | 4 инструмента | Добавление, перечисление, получение и удаление угроз |
| **Управление средствами противодействия** | 7 инструментов | Управление средствами противодействия и их связывание с угрозами |
| **Руководство по модели угроз** | 3 инструмента | Пошаговое руководство по процессу |
| **Типы моделей данных** | 2 инструмента | Изучение доступных типов моделей данных |
| **Валидация безопасности кода** | 3 инструмента | Валидация средств безопасности в коде |
| **Валидация модели угроз** | 2 инструмента | Валидация моделей угроз по отношению к коду |
| **Оркестратор шагов** | 12 инструментов | Пофазное руководство и выполнение шагов |
## Методология моделирования угроз
### Фреймворк STRIDE
Сервер использует методологию STRIDE для систематического выявления угроз:
| Категория | Описание | Примеры угроз |
|-----------|------------|-----------------|
| **Spoofing (подмена)** | Выдача себя за кого-то или что-то другое | Обход аутентификации, кража личности |
| **Tampering (вмешательство)** | Изменение данных или кода | Повреждение данных, внедрение кода |
| **Repudiation (отказ)** | Утверждение, что действие не выполнялось | Подделка журналов, сбои неотказуемости |
| **Information Disclosure (раскрытие информации)** | Раскрытие информации неавторизованным пользователям | Утечки данных, нарушения конфиденциальности |
| **Denial of Service (отказ в обслуживании)** | Отказ или ухудшение обслуживания | Истощение ресурсов, атаки на доступность |
| **Elevation of Privilege (повышение привилегий)** | Получение возможностей без авторизации | Эскалация привилегий, несанкционированный доступ |
### Процесс моделирования угроз
Исчерпывающий процесс моделирования угроз включает следующие фазы:
1. **Анализ бизнес-контекста**: Понимание бизнес-ценности и критичности системы
2. **Анализ архитектуры**: Документирование технической архитектуры системы
3. **Анализ угрозных субъектов**: Выявление потенциальных противников и их возможностей
4. **Анализ границ доверия**: Выявление зон доверия и пересечения границ
5. **Анализ потоков активов**: Отслеживание критических активов через систему
6. **Выявление угроз**: Систематическое выявление потенциальных угроз с использованием STRIDE
7. **Планирование противодействий**: Разработка стратегий для устранения выявленных угроз
8. **Валидация кода**: Проверка угроз на соответствие существующим средствам безопасности
9. **Анализ остаточных рисков**: Оценка оставшихся рисков после применения средств противодействия
Каждая фаза включает конкретные цели, мероприятия и результаты для руководства процессом моделирования угроз.
### Уровни серьёзности угроз
- **Критический**: Требуются немедленные действия, вероятна компрометация системы
- **Высокий**: Значительный риск, следует устранить быстро
- **Средний**: Умеренный риск, устранить в обычном цикле разработки
- **Низкий**: Незначительный риск, устранить при возможности
- **Информационный**: Информационное замечание, немедленных действий не требуется
### Типы средств противодействия
- **Предупредительные**: Средства, предотвращающие возникновение угроз
- **Обнаруживающие**: Средства, обнаруживающие возникновение угроз
- **Исправляющие**: Средства, реагирующие на угрозы и исправляющие их
- **Компенсирующие**: Альтернативные средства, когда основные средства невозможны
## Допущения в моделировании угроз
Допущения — это утверждения, которые мы принимаем как истинные без необходимости дальнейшей валидации. Они помогают определить границы модели угроз, устанавливая рамки и ограничения. Распространённые примеры:
- "Все сетевые соединения в VPC зашифрованы при передаче"
- "Ключи AWS KMS невозможно подобрать перебором"
- "Угрозные субъекты уровня государств не рассматриваются для этой системы"
Документируя допущения, мы можем:
- Избегать генерации бессмысленных угроз
- Не рекомендовать ненужные средства противодействия
- Фокусироваться на релевантных проблемах безопасности
- Чётко документировать область применения и ограничения модели угроз
## Разработка
### Участие в проекте
Чтобы внести вклад в этот проект:
1. Клонируйте репозиторий
2. Установите зависимости для разработки: `uv pip install -e .`
3. Запустите сервер локально: `python run_server.py`
4. Запустите тесты: `python -m pytest`
## Безопасность
См. [CONTRIBUTING](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/CONTRIBUTING.md#security-issue-notifications) для получения дополнительной информации.
## Лицензия
Этот проект лицензирован под лицензией Apache-2.0. Подробнее см. в файле [LICENSE](https://github.com/awslabs/threat-modeling-mcp-server/blob/HEAD/LICENSE).