D365 F&O MCP Server: уязвимость CVE-2026-114123 — развёртывание Azure по умолчанию без аутентификации
В проекте D365 F&O MCP Server — сервере Model Context Protocol для выполнения запросов к исходному коду и метаданным X++ в Dynamics 365 Finance & Operations — выявлена уязвимость, получившая идентификатор CVE-2026-114123. Проблема затрагивает официально документированный сценарий развёртывания в Azure и связана с отсутствием аутентификации при конфигурации по умолчанию.
Подробности
Уязвимость присутствует в версиях dynamics365ninja d365fo-mcp-server до 1.11.0. Официально документированное развёртывание «в один клик» в Azure использует файлы infrastructure/azuredeploy.json и infrastructure/main.bicep, в которых параметр apiKey по умолчанию задан пустой строкой и передаётся в настройку API_KEY сервиса App Service.
Если API_KEY не задан или пуст, модуль src/middleware/apiKeyAuth.ts пропускает запросы без аутентификации, а src/index.ts по умолчанию привязывает HTTP-слушатель к 0.0.0.0. В результате публичный App Service, развёрнутый без указания ключа, без дополнительных сетевых ограничений и без вышестоящей аутентификации, позволяет выполнять неаутентифицированные JSON-RPC-вызовы tools/call к эндпоинту /mcp.
Режим MCP_SERVER_MODE=read-only, устанавливаемый при развёртывании, не предотвращает анонимный доступ к инструментам чтения и поиска, включая search, get_object_info, batch_get_info, extension_info, security_info, find_references и find_event_handlers. Через них раскрываются индексированные фрагменты проприетарного исходного кода X++ и метаданные: бизнес-логика, связи расширений и обработчиков событий, структура ролей и привилегий безопасности, а также метки, проиндексированные из PackagesLocalDirectory.
Уязвимость не затрагивает развёртывания, защищённые настроенным API-ключом, действующей вышестоящей аутентификацией или сетевыми ограничениями, блокирующими доступ злоумышленника. Уровень опасности по CVSS — 7.5 (HIGH).
Что делать
- Обновите D365 F&O MCP Server до версии 1.11.0 или более поздней — в ней проблема устранена.
- Если обновление пока невозможно, задайте непустое значение
API_KEYв настройках App Service и не оставляйте параметрapiKeyпустым при развёртывании. - Дополнительно ограничьте сетевой доступ к эндпоинту
/mcpи настройте вышестоящую аутентификацию (например, на уровне reverse proxy или шлюза). - Проверьте ранее развёрнутые инстансы: если ключ не был задан, исходите из того, что доступ к исходному коду и метаданным мог быть получен посторонними, и оцените необходимость ротации связанных секретов и анализа журналов доступа.
Проблема наглядно демонстрирует, как небезопасные значения по умолчанию в шаблонах инфраструктуры превращают внутренний инструмент разработки в публично доступную точку утечки интеллектуальной собственности. Для команд, использующих MCP-серверы в связке с бизнес-приложениями, критически важно проверять конфигурацию аутентификации сразу после развёртывания, а не полагаться на то, что «read-only» режим обеспечивает безопасность.
Источник: CVE Project (cvelistV5)
