Skip to main content

D365FO MCP Server EUVDEUVD-2026-107365

| CVE-2026-114123 HIGH
Missing Authentication for Critical Function (CWE-306)
2026-10-21 GitHub_M
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Discover public App Service /mcp endpoint
  2. Exploit
    Send unauthenticated JSON-RPC tools/call request
  3. Execution
    Invoke read tools (search, get_object_info, find_references)
  4. Impact
    Exfiltrate indexed X++ source, metadata, and security-role structure

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Authentication required for critical functions
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires that the server was provisioned via the officially documented Azure one-click deployment (infrastructure/azuredeploy.json and infrastructure/main.bicep) with the optional apiKey parameter left at its empty-string default, which propagates to an unset/empty API_KEY App Service setting; apiKeyAuth.ts then passes requests through without authentication while index.ts binds the listener to 0.0.0.0, yielding a publicly reachable App Service. The attacker must additionally be able to reach the /mcp endpoint over the network. Limiting factors that place a deployment OUTSIDE this exposure: a configured API key, effective upstream authentication, or network restrictions blocking attacker access. Note that MCP_SERVER_MODE=read-only does NOT mitigate it - it only limits the exposure to read/search tools (search, get_object_info, batch_get_info, extension_info, security_info, find_references, find_event_handlers). Affected versions are those prior to 1.11.0.

Impact

The CVSS 3.1 base score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) frames this as a trivially reachable, unauthenticated, network-facing confidentiality breach, and the vector is internally consistent with CWE-306 (Missing Authentication). However, the description makes clear the exposure is conditional on operator behavior: it only arises when a deployer uses the Azure one-click template, leaves the optional apiKey blank, and adds no network restriction or upstream authentication - so the raw PR:N score somewhat overstates universal risk, since correctly keyed or network-restricted deployments are explicitly out of scope. Impact is confidentiality-only (I:N/A:N): the read-only mode permits information disclosure of proprietary X++ source and metadata but not modification or denial of service, so this is a source/IP-leak issue rather than RCE. No EPSS score, no CISA KEV listing, and no public exploit are present in the provided data, so there is no evidence of active exploitation or mass scanning; prioritization should be driven by whether an organization actually ran the keyless public deployment, not by the headline score alone. Key missing signals: EPSS probability is absent and KEV status is not confirmed - treat widespread-exploitation assumptions as unverified.

Exploit ScenarioDerived

An organization follows the documented Azure one-click deployment, accepts the default empty apiKey, and leaves the App Service publicly reachable on 0.0.0.0 with no network controls. Because AV:N/AC:L/PR:N, a remote unauthenticated attacker who discovers the /mcp endpoint sends JSON-RPC tools/call requests and invokes read tools such as search and get_object_info to pull indexed X++ source and metadata. No public exploit is identified at time of analysis, but exploitation requires only a standard HTTP client and no special tooling.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 21, 2026

Unauthenticated network access to D365 F&O MCP Server instances prior to version 1.11.0 exposes indexed proprietary X++ source code and metadata through the /mcp JSON-RPC endpoint. The officially documented Azure one-click deployment (infrastructure/azuredeploy.json and infrastructure/main.bicep) defaults the optional apiKey parameter to an empty string and passes it into the App Service API_KEY setting; with that value empty, src/middleware/apiKeyAuth.ts lets requests through without authentication while src/index.ts binds the listener to 0.0.0.0, so any deployer who leaves the key blank and adds no network restrictions or upstream authentication publishes the server to the internet. Attackers can then invoke read/search tools (search, get_object_info, batch_get_info, extension_info, security_info, find_references, find_event_handlers) to harvest business logic, extension and event-handler wiring, and security-role and privilege structure; the CVSS 3.1 score is 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N) matching CWE-306, and no public exploit was identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to D365FO MCP Server v1.11.0 (release https://github.com/dynamics365ninja/d365fo-mcp-server/releases/tag/v1.11.0), which integrates fixes from commits 384394a81e1c6c1e0149586203395240a38fc818 and e70bd051f817ebb652d664b10a944fe2c5495de2 - the server now resolves the bind host from the key state, defaulting to 127.0.0.1 when no API key is present, refusing startup if HOST requests a public interface without a key, and the Azure templates no longer silently produce an unauthenticated public App Service. For deployments that cannot upgrade immediately, the primary compensating control is to set a strong API_KEY on the App Service (for example generate one with 'openssl rand -hex 32') and supply it as X-Api-Key or Authorization: Bearer from MCP clients, with the trade-off of requiring key distribution and rotation to every client; alternatively enable App Service Authentication/Easy Auth in front of the site (trade-off: requires Entra ID or another identity provider configuration and all clients must authenticate at the platform layer), or apply App Service access restrictions / private endpoints / IP allowlists so /mcp is unreachable from untrusted networks (trade-off: blocks legitimate remote clients unless their egress ranges are enumerated). Do not rely on MCP_SERVER_MODE=read-only as a mitigation - it only narrows the exposed toolset to read/search functions and does not prevent anonymous access. Confirm the remediation by requesting /mcp without credentials and verifying the server rejects unauthenticated JSON-RPC calls; consult https://github.com/dynamics365ninja/d365fo-mcp-server/security/advisories/GHSA-8764-fh3m-wf7g for the vendor advisory.

Affected VersionsENISA

d365fo-mcp-server < 1.11.0

Affected Packages

euvd d365fo_mcp_server fix: 1.11.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The D365 F&O MCP Server is a Model Context Protocol (MCP) server written in TypeScript that exposes Dynamsoft 365 Finance & Operations X++ code and metadata - originally indexed from PackagesLocalDirectory - to MCP clients over HTTP using JSON-RPC tools/call requests at the /mcp path. Authentication is implemented as Express-style middleware in src/middleware/apiKeyAuth.ts, which expects a shared secret in API_KEY and checks it via the X-Api-Key header or Authorization: Bearer token; the root cause is CWE-306 (Missing Authentication for Critical Function), because when API_KEY is unset or empty the middleware short-circuits into a pass-through mode rather than failing closed. Compounding this, src/index.ts binds the HTTP transport to 0.0.0.0 by default, and the Azure deployment templates in infrastructure/azuredeploy.json and infrastructure/main.bicep declare apiKey as an optional parameter with an empty-string default that is wired directly into the App Service configuration, so a template-driven deployment can silently produce a publicly reachable App Service with no authentication layer. The MCP_SERVER_MODE=read-only setting only restricts which tools are exposed; it does not gate access, so the read/search toolset still returns source snippets, extension and event-handler registrations, and security-role and privilege metadata to anonymous callers. The fix in 1.11.0 introduces a resolveBindHost helper that defaults the bind address to 127.0.0.1 when no API key (or explicit ALLOW_UNAUTHENTICATED) is configured, and refuses to start if HOST explicitly requests a public interface without a key.

Know when Azure gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 7.5 HIGH

A keyless public App Service passes unauthenticated HTTP requests, so AV:N/AC:L/PR:N/UI:N; read-only tools disclose proprietary source and metadata (C:H) with no write or availability impact (I:N/A:N).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Oct 21, 2026 - 18:03 EUVD
CVE Published
Oct 21, 2026 - 16:57 cve.org
HIGH 7.5

DescriptionCVE.org

D365 F&O MCP Server is a Model Context Protocol server for querying Dynamics 365 Finance & Operations X++ code and metadata. Prior to version 1.11.0, the officially documented Azure one-click deployment uses infrastructure/azuredeploy.json and infrastructure/main.bicep to default the apiKey parameter to an empty string and pass it to the App Service API_KEY setting. With API_KEY unset or empty, src/middleware/apiKeyAuth.ts passes requests through without authentication, while src/index.ts binds the HTTP listener to 0.0.0.0 by default. If the deployer leaves the optional key blank and does not add separate network restrictions or upstream authentication, the resulting public App Service allows unauthenticated JSON-RPC tools/call requests to /mcp. The deployment's MCP_SERVER_MODE=read-only setting does not prevent anonymous access to read/search tools, including search, get_object_info, batch_get_info, extension_info, security_info, find_references, and find_event_handlers, exposing indexed proprietary X++ source snippets and metadata. Exposed information can include business logic, extension and event-handler wiring, security-role and privilege structure, and labels originally indexed from PackagesLocalDirectory. Deployments protected by a configured API key, effective upstream authentication, or network restrictions preventing attacker access are outside this unauthenticated exposure scenario. This issue is fixed in version 1.11.0.

Technical POC Analysis

CWE-306 (Missing Authentication for Critical Function), with a secondary CWE-1188 (insecure default initialization) contribution from the deployment templates.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Azure one-click deployments of the Dynamics 365 Finance & Operations MCP Server can silently publish the organization's proprietary X++ source code, extension and event-handler wiring, and security-role and privilege structure to the public internet whenever the optional apiKey parameter is left at its documented empty-string default. No credentials or user interaction are required, so the exposure is invisible to traditional access monitoring and persists until someone checks the configuration. Leadership should treat this as an intellectual-property and reconnaissance exposure affecting any business unit running D365 F&O with this tooling deployed from the vendor templates, since the harvested security model materially shortens the path for follow-on attacks against the ERP platform.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations are to set a strong, non-empty API_KEY on every App Service instance (overriding the empty-string template default), enforce App Service access restrictions or a private endpoint so /mcp is not internet-reachable, front the service with an authenticating reverse proxy or WAF, and retire or stop any MCP Server instance not actively in use. Because no public exploit was identified at time of analysis, prompt configuration hardening closes the exposure without requiring a code fix.

Threat Intelligence Overview

EPSS Score
0.4%
Top 64% exploitable
Prevalence
Rare
obscure third-party D365 MCP server, tiny and niche deployment footprint
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Azure

View all
CVE-2026-62874 CRITICAL POC
9.8 Sep 18

Privilege escalation in Microsoft's Azure Billing service allows unauthenticated, remote attackers to reach full comprom

CVE-2026-23889 MEDIUM POC
6.5 Jan 26

Path traversal in pnpm's tarball extraction on Windows allows attackers to write files outside the intended package dire

CVE-2026-31957 CRITICAL
10.0 Mar 11

Default password in Himmelblau Azure Entra ID suite 3.0.0-3.0.x. CVSS 10.0.

CVE-2026-85878 CRITICAL
9.9 Sep 18

Privilege escalation in Azure Database for PostgreSQL allows an authenticated attacker with low privileges to elevate pr

CVE-2026-70200 CRITICAL
9.8 Sep 17

Path traversal in Microsoft's Azure Logic Apps (CWE-22) lets a remote, unauthenticated attacker escape an intended restr

CVE-2025-20286 CRITICAL
9.9 Jun 04

Default credentials in Cisco ISE cloud deployments on AWS/Azure/OCI. CVSS 9.9.

CVE-2026-85889 CRITICAL
9.8 Sep 17

Unauthenticated remote attackers can reach a critical function inside Microsoft Azure AI Foundry that performs a privile

CVE-2026-21531 CRITICAL
9.8 Feb 10

Deserialization of untrusted data in Azure SDK allows unauthorized code execution over a network. EPSS 0.32%.

CVE-2026-24300 CRITICAL
9.8 Feb 05

Elevation of privilege vulnerability in Azure Front Door allows attackers to gain elevated access. Microsoft Azure cloud

CVE-2026-24306 CRITICAL
9.8 Jan 22

Azure Front Door has an improper access control vulnerability (CVSS 9.8) allowing unauthorized attackers to elevate priv

CVE-2026-3224 CRITICAL
9.8 Mar 03

Azure AD auth bypass in Devolutions Server 2025.3.15.0 and earlier.

CVE-2026-23518 CRITICAL
9.8 Jan 21

Fleet device management software has a signature verification bypass that allows attackers to install malicious firmware

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy