IT SBIT Services
Schneeberger
DEEN
CVE tracker

OCO-Server: Authentication bypass in Apple MDM enrollment endpoint

CVE-2026-114611Critical 9.1

← All vulnerabilities

Summary

OCO-Server, a self-hosted endpoint management application, accepts signed Apple MDM enrollment requests without validating the signer certificate chain (PKCS7_NOVERIFY). An unauthenticated attacker who knows a registered device's serial number can obtain that device's MDM identity certificate and private key and overwrite its device record with an attacker-chosen UDID. With these, the attacker can impersonate the device on subsequent MDM check-in and command traffic.

Affected

  • OCO-Server versions before 1.2.3 (advisory lists <= 1.2.2)

Fixed in

  • Version 1.2.3 (commit f3a6591)

Workaround

  • Unknown.
  • Restrict external access to /api-mdm.php, /checkin, /mdm and /parameters if possible.

Exploitation

  • CISA SSVC: exploitation status PoC, automatable: yes, technical impact: total.
  • No confirmed exploitation in the wild found.
  • A serial number is the only required precondition besides network access.

Our recommendation

  • Upgrade OCO-Server to version 1.2.3 or later.
  • If Apple MDM is not used, check whether the endpoint is exposed and disable it if possible.
  • Review the mobile_device table for unexpected UDID changes.
  • Revoke and re-enroll MDM identities for devices that may have been affected.

Public exploits

PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.

Research sources

Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 31 Oct 2026, 05:30.

Original description (NVD)

OCO-Server is a self-hosted endpoint management application for computer inventory, software deployment, and mobile device management. Prior to 1.2.3,the Apple MDM enrollment endpoint `frontend/api-mdm.php` verifies the signed enrollment-request plist with `openssl_pkcs7_verify(..., PKCS7_NOVERIFY, ...)`. `PKCS7_NOVERIFY` disables signer certificate chain and trust validation, so the signature only has to be self-consistent with whatever certificate is embedded in the PKCS#7 blob. A self-signed certificate from an unrelated attacker is accepted. Because the endpoint trusts the `SERIAL` field taken from the unverified payload, anyone who knows a registered device's serial number can sign a forged plist (`SERIAL` = victim device, attacker-chosen `UDID`) with an arbitrary self-signed certificate; POST it unauthenticated to `/api-mdm.php/profile` (Content-Type: `application/pkcs7-signature`); and receive the victim device's freshly minted MDM identity: a certificate with `CN=<serial>` issued by the server's internal MDM device CA, bundled with its private key in a PKCS#12 payload inside the returned `.mobileconfig` enrollment profile. Additionally, the victim's `mobile_device` database row is silently overwritten with the attacker-supplied `UDID` (device-record hijack). With the stolen certificate and key, the attacker can impersonate the victim device on all subsequent MDM traffic (`/checkin`, `/mdm`, `/parameters`), which authenticate callers by the certificate CN (the serial number) via `checkSignature()` in the same file. This yields control over the victim device's MDM relationship: reading its management data, replacing its push token, and disrupting or redirecting its enrollment. Version 1.2.3 fixes the issue.

NVD references (4)

Sources

The tracker combines official, freely usable data sources – updated continuously:

This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.

Affected? We can help.

We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.