Safeguard
Vulnerability Analysis•

CVE-2026-111923: High Unauthenticated DoS in Fleet Apple MDM Plist Parsing

Fleet before 4.89.0 can be crashed by an unauthenticated Apple MDM enrollment request with a tiny crafted plist and unbounded recursion. Upgrade to 4.89.0.

Safeguard Security Team
3 min read

CVE-2026-111923 is a high severity (CVSS 7.5) unbounded recursion flaw in Fleet before 4.89.0. An unauthenticated caller can crash the server by sending a small crafted binary plist to Apple MDM enrollment endpoints. Upgrade to 4.89.0 or later. The sections below cover affected versions, how to check, and what to do first.

What's affected

Fleet before 4.89.0, per the record, VulnCheck and the GitHub advisory, which lists 4.89.0 as the patched version. The advisory covers the Go module github.com/fleetdm/fleet.

Only servers with Apple MDM enabled are exposed. The advisory says the impact is availability only, with no data exposure, no authentication bypass and no privilege escalation.

Scoring note: the record's 7.5 is a CVSS 3.1 base score. VulnCheck's advisory also lists 8.7 under CVSS 4.0. Both describe the same flaw, and the two versions weigh the factors differently.

How to check if you're exposed

Check your Fleet server version in the web interface or from the image tag you deploy. Confirm whether Apple MDM is enabled in your configuration.

If it is, check that the enrollment endpoints are the only ones you expose to devices. Watch for server restarts and out of memory events in your orchestrator, which would match the crash behaviour.

What to do now

  1. Find your Fleet server version and whether Apple MDM is on.
  2. Upgrade to 4.89.0 or later.
  3. Run Fleet under a supervisor so it restarts after a crash.
  4. Set memory limits and alerts on the server process.
  5. Limit exposure of the enrollment endpoints to what devices need.
  6. Scan your dependencies with the free in-browser scan and look the CVE up in the Gold directory to see where else it appears.

Prioritise by what is reachable, not by the score alone. Reachability analysis asks whether your own code actually calls the vulnerable path and whether an attacker can get to it. A flaw in a component you never expose is less urgent than the same flaw on a public host, so use that view to order your work.

Why it matters

This is CWE-674, uncontrolled recursion. A binary property list can contain references from one object to another. The parser followed them with no depth or cycle limit, so a tiny payload of about 150 bytes could force exponential allocation or endless recursion.

The payload is parsed before the device is authenticated, which is why no credentials are needed. Parsers of untrusted formats need depth limits and cycle detection by default. It is not listed in CISA KEV.

Quick check

Does this expose device data?

No. The advisory says availability only.

Which version fixes it?

4.89.0, according to the GitHub advisory.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.