OCO-Server: Authentication bypass in Apple MDM enrollment endpoint
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
- GitHub Security Advisory GHSA-p549-5h7r-7639 github.com
- Fix commit f3a6591 (improve device cert check) github.com
- OCO-Server v1.2.3 release github.com
- VulDB entry 425346 vuldb.com
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)
- https://github.com/schorschii/OCO-Server/commit/5cab5ad2461434816d706b7be9cc08bda15c1404
- https://github.com/schorschii/OCO-Server/commit/f3a6591136f9bd92aff39ddfb26587e6dfdb64df
- https://github.com/schorschii/OCO-Server/security/advisories/GHSA-p549-5h7r-7639
- https://github.com/schorschii/OCO-Server/security/advisories/GHSA-p549-5h7r-7639
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
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.
