An unauthenticated login form that eats a poisoned .NET blob and hands you the server
CVE-2026-55944 is a CWE-502 unsafe deserialization flaw in the login pathway of the Microsoft Dynamics NAV and Dynamics 365 Business Central (on-prem) Service Tier. An unauthenticated attacker who can reach the NAV/BC service endpoint sends a crafted login request carrying a poisoned serialized object; the server deserializes it before the credential check completes and executes attacker-controlled code in the context of the Dynamics NAV Server service account. Affected products span the current Business Central on-prem servicing branches through the July 2026 Patch Tuesday update, plus legacy Dynamics NAV builds still receiving security servicing.
Microsoft's CRITICAL / 9.8 score is technically accurate against the CVSS calculator — the vector genuinely is AV:N/AC:L/PR:N/UI:N with total C/I/A impact — and Microsoft flagged it *Exploitation More Likely*. But CVSS ignores population. Business Central on-prem is a shrinking installed base: Microsoft has been pushing customers to the SaaS-hosted tenant (unaffected), and the on-prem Service Tier is *almost never* directly internet-facing — it usually sits behind a Web Client or reverse proxy on an internal segment. That drops the practical severity to HIGH, not CRITICAL, for a typical enterprise footprint.
4 steps from start to impact.
Reach the NAV/BC Service Tier endpoint
- Network reachability to the Service Tier
- Service Tier version is pre-July-2026 patch
- On-prem NAV/BC is typically deployed behind a firewall or reverse proxy
- SaaS Business Central tenants are not affected
- Shodan/Censys show a small population of exposed NAV endpoints
Craft a poisoned login request
TypeConfuseDelegate, WindowsIdentity, or ObjectDataProvider gadgets are the usual suspects for BinaryFormatter/NetDataContractSerializer surfaces). The payload is embedded in the login request body / authentication token field that the Service Tier deserializes before validating credentials.- Working knowledge of the login RPC/SOAP schema
- A .NET gadget available in the target's loaded assemblies
- No public PoC or Metasploit module at time of writing
- Requires reversing the specific login handler to identify the sink
__type, System.Windows.Data.ObjectDataProvider, base64-encoded AAEAAAD/////) catch naive payloads.Trigger deserialization before auth
Microsoft.Dynamics.Nav.Server.exe process.- Vulnerable code path reached before credential validation
- Payload gadget resolves in the runtime assembly set
- Some deployments run the Service Tier as a low-privilege domain account — RCE is still full user context but not SYSTEM
- AMSI on modern Windows Server may inspect reflective loads
Microsoft.Dynamics.Nav.Server.exe spawning cmd.exe / powershell.exe — this is a *very* uncommon parent-child relationship.Pivot from the Service Tier
- Service Tier holds a SQL trusted connection
- EDR is absent or bypassed
- Modern deployments increasingly use gMSA and least-privilege DB roles
- LSASS protections (Credential Guard, RunAsPPL) block naive dumps
The supporting signals.
| In-the-wild status | No confirmed exploitation as of 2026-07-15. Microsoft labeled *Exploitation More Likely* — a predictive rating, not evidence of active use. |
|---|---|
| Proof-of-concept | No public PoC on GitHub or exploit-db at time of assessment. Deserialization sinks in Dynamics NAV have historically been reachable via ysoserial.net gadget chains. |
| KEV status | Not KEV-listed (as of 2026-07-15) |
| EPSS | Freshly disclosed (2026-07-14) — initial EPSS below 1%, expected to climb as PoC lands |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8 CRITICAL — pre-auth network RCE with full CIA impact |
| Affected products | Microsoft Dynamics NAV (all supported servicing branches) and Microsoft Dynamics 365 Business Central on-premises. SaaS Business Central tenants are *not* affected. |
| Fixed in | July 2026 Patch Tuesday cumulative updates for Business Central 2025 Release Wave 2, 2025 RW1, 2024 RW2, and legacy NAV 2018 / NAV 2017 security rollups |
| Exposure data | Shodan queries for Dynamics NAV Service Tier fingerprints typically return <2,000 internet-exposed hosts globally — a fraction of the installed base |
| Disclosure | 2026-07-14 — Microsoft Patch Tuesday, coordinated disclosure |
| Reporter | Credited via MSRC — researcher name not yet publicly attributed in Microsoft's advisory |
noisgate verdict.
Downgraded from CRITICAL to HIGH because the decisive factor is exposed population: the Dynamics NAV / Business Central on-prem Service Tier is a back-office ERP component that is *almost never* directly internet-facing, and the SaaS tenant (which is the dominant modern deployment) is unaffected. The pre-auth RCE holds full weight for the small subset of orgs running exposed on-prem instances, so the floor stays at HIGH — not MEDIUM.
Why this verdict
- Pre-auth network RCE is real — the CVSS 9.8 is not inflated; the vector genuinely requires no credentials and no user interaction
- Exposed population is small — on-prem NAV/BC Service Tiers are typically internal-only; Shodan/Censys sweeps return low thousands of hosts globally, well under 1% of the installed base
- SaaS Business Central is not affected — Microsoft's dominant modern deployment model removes the majority of tenants from the blast radius
- Role multiplier: on the low-value role (dev/test NAV box) the chain yields host RCE — contained; on the typical role (internal ERP Service Tier) the chain ends in SQL database compromise with financial and vendor-payment data egress — HIGH-tier blast radius; there is no canonical high-value fleet-scale role for this component (it is not an IdP, hypervisor, PAM, or DC), so the floor stays HIGH, not CRITICAL
- No PoC and no KEV listing yet — attacker tooling has to be built, not downloaded, buying defenders time
Why not higher?
CRITICAL floor requires either canonical high-value-role status (IdP, hypervisor, PAM, CA, DC, edge appliance) or active exploitation. Dynamics NAV is a back-office ERP tier, not a fleet-defining component, and there is no evidence of in-the-wild use. The exposed on-prem population is a rounding error against the SaaS base.
Why not lower?
Cannot downgrade below HIGH because when the chain lands, the outcome is financial ERP database compromise — vendor payment redirection, invoice fraud, and regulated financial data exfiltration are all direct consequences. Pre-auth, network-reachable, CIA-total deserialization sinks in .NET services have a strong historical track record of weaponization inside 30-60 days of disclosure.
What to do — in priority order.
- Block external access to NAV/BC Service Tier ports (7046-7048) and Web Client — The vulnerable endpoint should never be internet-reachable. Confirm perimeter firewall and any reverse-proxy WAF drops inbound to the Service Tier. Deploy within 30 days per noisgate HIGH mitigation SLA — or within hours if your Shodan self-lookup shows an exposed instance.
- Restrict Service Tier reachability to Dynamics client subnets only — Internal segmentation: allow only known Dynamics client workstation ranges and integration servers to reach the Service Tier. Blocks unauthenticated internal attackers (compromised workstations) from pivoting. Complete within 30 days.
- Run the Dynamics NAV Server service under a gMSA with least-privilege SQL role — If RCE lands, this constrains the blast radius on the SQL backend — no
sysadmin, no domain admin. If you're still using a domain user withdbo, rotate before the remediation window closes. - Enable AMSI + verify EDR coverage on the NAV Service Tier host — EDR reliably alerts on
Microsoft.Dynamics.Nav.Server.exespawning shells — an anomalous parent-child pair. Confirm the host is enrolled and alerts route to the SOC on-call, not a shared inbox. - Apply the July 2026 cumulative update within noisgate remediation SLA (≤ 180 days) — Vendor patch is the durable fix. Prioritize toward the front of the window if the host is internet-adjacent, integrated with payment/EDI, or houses regulated financial data.
- MFA on the NAV login — irrelevant; deserialization fires before credential validation
- Strong SQL passwords / SQL auth hardening — the exploit runs as the Service Tier process, which uses a trusted connection
- IP allowlisting on the Web Client alone — the Service Tier ports (7046-7048) are the primary sink and are often not fronted by the same WAF
- WAF payload signatures without deep .NET inspection — obfuscated gadget chains and non-BinaryFormatter serializers bypass naïve regex rules
Crowdsourced verification payload.
Run on each Dynamics NAV / Business Central on-prem Service Tier host as Administrator (needs registry + service enumeration). Invoke as: PS C:\> .\Check-CVE-2026-55944.ps1. Compares installed Service Tier build against the July 2026 patched baselines.
#Requires -RunAsAdministrator
# noisgate: CVE-2026-55944 detector for Microsoft Dynamics NAV / Business Central on-prem
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN / not installed
$ErrorActionPreference = 'Stop'
# Patched-baseline map — July 2026 Patch Tuesday cumulative updates.
# Adjust minor build numbers if Microsoft's advisory publishes exact fixed versions.
$patched = @{
'26' = [Version]'26.5.0.0' # BC 2025 RW2
'25' = [Version]'25.9.0.0' # BC 2025 RW1
'24' = [Version]'24.14.0.0' # BC 2024 RW2
'23' = [Version]'23.20.0.0' # BC 2023 RW2
'11' = [Version]'11.0.55000' # NAV 2018 legacy rollup
}
$svc = Get-Service -Name 'MicrosoftDynamicsNavServer*' -ErrorAction SilentlyContinue
if (-not $svc) {
Write-Output 'UNKNOWN: no Dynamics NAV Server service present'
exit 2
}
$exePath = (Get-WmiObject Win32_Service |
Where-Object { $_.Name -like 'MicrosoftDynamicsNavServer*' } |
Select-Object -First 1).PathName -replace '"',''
$exePath = ($exePath -split '\.exe')[0] + '.exe'
if (-not (Test-Path $exePath)) {
Write-Output "UNKNOWN: service binary not found at $exePath"
exit 2
}
$fv = (Get-Item $exePath).VersionInfo.FileVersion
$installed = [Version]($fv -split ' ')[0]
$major = $installed.Major.ToString()
if (-not $patched.ContainsKey($major)) {
Write-Output "UNKNOWN: unrecognized major branch $major (build $installed)"
exit 2
}
if ($installed -ge $patched[$major]) {
Write-Output "PATCHED: Dynamics NAV/BC $installed >= baseline $($patched[$major])"
exit 0
} else {
Write-Output "VULNERABLE: Dynamics NAV/BC $installed < patched baseline $($patched[$major]) for CVE-2026-55944"
exit 1
}
If you remember one thing.
Sources
- MSRC — CVE-2026-55944
- Tenable — July 2026 Patch Tuesday analysis
- Security Boulevard — July 2026 Patch Tuesday (569 CVEs)
- ZDI — July 2026 Security Update Review
- Talos — Microsoft Patch Tuesday July 2026
- Qualys — July 2026 Patch Tuesday Review
- Tenable Nessus plugin 314959 — Business Central security updates
- ysoserial.net — .NET deserialization gadget generator
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.