CVE-2026-114611: OCO-Server: MDM /profile endpoint accepts self-signed PKCS#7 signatures (PKCS7_NOVERIFY): device MDM identity (certificate + private key) disclosure and device-record hijack
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 opensslpkcs7verify(..., PKCS7NOVERIFY, ...). PKCS7NOVERIFY 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 mobiledevice 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
OCO-Serverto a version that resolves this vulnerability.Fixed in 1.2.3
Event History
Frequently Asked Questions
Which installations should be treated as affected?
OCO-Server versions prior to 1.2.3 are affected. The exposed enrollment handler is frontend/api-mdm.php at the /api-mdm.php/profile path.
What does an attacker need to exploit the issue?
The attacker needs the serial number of a registered device and network access to the profile endpoint. They can submit an unauthenticated PKCS#7-signed plist using an arbitrary self-signed certificate and an attacker-selected UDID.
Does exploitation require a certificate trusted by the server?
No. The affected verification uses PKCS7_NOVERIFY, so signer certificate-chain and trust validation are disabled; a self-signed certificate is accepted if the PKCS#7 signature is internally consistent.
What can an attacker obtain after a successful request?
The response can provide the victim device's newly minted MDM identity in an enrollment profile. This includes a certificate issued by the server's internal MDM device CA and its private key in a PKCS#12 payload.
How can I determine whether my server is exposed?
Check the deployed OCO-Server version. Installations running a version earlier than 1.2.3 should be considered vulnerable.