Skip to main content

OCO-Server CVE-2026-114611

| EUVDEUVD-2026-108268 CRITICAL
Improper Certificate Validation (CWE-295)
2026-10-22 GitHub_M
9.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain victim device serial number
  2. Delivery
    Forge plist (SERIAL=victim, attacker UDID) signed with self-signed cert
  3. Exploit
    POST unauthenticated to /api-mdm.php/profile
  4. Execution
    Receive victim MDM certificate and private key, overwrite device UDID
  5. Impact
    Impersonate device on /checkin, /mdm, /parameters

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V12 - Secure Communication Certificate validation
Exploitation Conditions

Requires that the OCO-Server Apple MDM feature be enabled (introduced in v1.2.0) and that the /api-mdm.php/profile endpoint be network-reachable, running an affected version (>=1.2.0, <1.2.3). The attacker must know the serial number of an already-registered victim device, which is supplied verbatim in the forged plist's SERIAL field; no authentication, credentials, or user interaction are needed (PR:N/UI:N) and any self-signed certificate is accepted because of the PKCS7_NOVERIFY flag. The only practical limiting factor is knowledge of a valid registered serial number - a weak barrier since serials appear in asset inventories, invoices, and on device labels - and the device must already exist in the mobile_device table.

Impact

This is a genuine high priority, not a CVSS-inflated paper risk. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H) is corroborated by the mechanism in the GHSA advisory: openssl_pkcs7_verify() is called with PKCS7_NOVERIFY on the Apple MDM /profile enrollment endpoint, disabling signer chain/trust validation, so any self-signed certificate satisfies the check and the attacker-controlled SERIAL field is trusted. The vuln.today decision label is act_now and a vendor patch (1.2.3) is available, which together argue for prompt remediation. The one real-world moderating factor is that exploitation requires knowing a registered device's serial number - but the advisory notes serials are commonly exposed in asset inventories, invoices, and on the devices themselves, so this is a weak barrier rather than a true secret. No EPSS score and no CISA KEV entry are present in the input; the absence of an EPSS figure means widespread-exploitation probability cannot be quantified here, and the lack of KEV means active exploitation is not confirmed. There is no public weaponized exploit, but the GHSA advisory publicly documents complete, verified reproduction steps (verified 2026-09-03 against v1.2.2), lowering the effort to reproduce. Net: a reachable, unauthenticated, low-complexity flaw with high confidentiality and integrity impact against a self-hosted product - treat as urgent for any exposed OCO-Server MDM deployment.

Exploit ScenarioDerived

An attacker who learns the serial number of a device managed by an exposed OCO-Server (from an asset list, invoice, or the device casing) crafts a PKCS#7-signed enrollment plist setting SERIAL to the victim device and an attacker-chosen UDID, signed with a throwaway self-signed certificate. They POST it unauthenticated to /api-mdm.php/profile and receive a .mobileconfig containing a certificate (CN=<serial>) issued by the server's internal MDM CA together with its matching private key, letting them impersonate the device on all subsequent MDM traffic. The GHSA advisory publicly documents verified reproduction steps (tested against v1.2.2 in a Docker sandbox), though no public weaponized exploit code is identified in the input.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 22, 2026

Unauthenticated attackers who know a registered device's serial number can obtain that device's MDM client certificate and private key from OCO-Server's Apple MDM enrollment endpoint and then impersonate the device on all subsequent MDM traffic. The /api-mdm.php/profile handler verifies enrollment plists with openssl_pkcs7_verify(..., PKCS7_NOVERIFY, ...), so an arbitrary self-signed certificate satisfies the check and the SERIAL/UDID claims in the payload are trusted without being bound to the signer; the response returns a PKCS#12 bundle containing a certificate with CN=<serial> issued by the server's internal MDM device CA together with its private key, and the victim's mobile_device row is overwritten with the attacker-chosen UDID. Affects OCO-Server 1.2.0 through 1.2.2 (the MDM feature was introduced in 1.2.0); version 1.2.3 fixes the issue. Reported by GitHub_M and rated act_now by vuln.today priority; no public exploit identified at time of analysis, active exploitation is not confirmed, and the reporter states a proof of concept and full reproduction evidence were offered privately under coordinated disclosure.

RemediationAI

Upgrade to OCO-Server 1.2.3, which fixes the issue; the vendor references are the advisory at https://github.com/schorschii/OCO-Server/security/advisories/GHSA-p549-5h7r-7639 and the commits https://github.com/schorschii/OCO-Server/commit/5cab5ad2461434816d706b7be9cc08bda15c1404 and https://github.com/schorschii/OCO-Server/commit/f3a6591136f9bd92aff39ddfb26587e6dfdb64df. The advisory's suggested fix set is to replace PKCS7_NOVERIFY with validation of the signer chain against Apple's device-identity CA or a configured trusted CA, or, if that is genuinely infeasible, to drop the misleading signature check and bind enrollment to a strong per-device secret provisioned out-of-band (enrollment token or HMAC key) so SERIAL/UDID cannot be forged by an unauthenticated party; to resolve the checkSignature() TODO by verifying that the certificate CN matches the serial of the device being operated on; and to stop re-issuing an enrollment profile with a fresh private key for an already-registered device in response to an unauthenticated request. If upgrading immediately is not possible, the only documented exposure control is limiting network reachability of /api-mdm.php/profile to trusted networks or enrollment paths, or disabling the Apple MDM feature where it is not in use - with the trade-off that legitimate device enrollment and MDM management traffic uses the same endpoint and feature, and such filtering does not repair the underlying trust-validation defect. Because a successfully exploited device's MDM identity (certificate plus private key) and mobile_device record may already be compromised, rotating or re-issuing MDM identities and re-enrolling affected devices should be considered alongside the patch.

Affected VersionsENISA

OCO-Server < 1.2.3

Affected Packages

euvd oco_server fix: 1.2.3

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The affected component is the PHP front end of OCO-Server's self-hosted endpoint management application, specifically the Apple MDM enrollment path in frontend/api-mdm.php (CWE-295, improper certificate validation). Enrollment requests are CMS/PKCS#7-signed property lists parsed with the CFPropertyList library; the handler passes the PKCS7_NOVERIFY flag to openssl_pkcs7_verify(), which disables signer certificate chain and trust evaluation so the signature only needs to be internally consistent with whatever certificate is embedded in the blob. The code comment above the call describes the flag as a workaround because the iPhone CA certificate had expired, so the design deliberately skipped trust anchoring. Because the SERIAL and UDID fields are read from that unverified payload and never bound to the signer identity, a self-signed certificate from an unrelated party is sufficient to mint an enrollment profile for any serial that already exists in the mobile_device table. The same file contains a secondary contributing weakness: checkSignature(), which authenticates /checkin, /mdm and /parameters callers by certificate CN (the serial number), carries a 'TODO: check CN === $md->serial' note, so a device holding any valid internal-CA-issued certificate is not matched against the specific device record it claims to be. The negative control in the report (identical payload failing verification with 'Verify error: self-signed certificate' when NOVERIFY is removed) isolates the root cause to the flag rather than to plist parsing.

Know when PHP gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 9.1 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 9.1 CRITICAL

Unauthenticated network request to a reachable endpoint with no user interaction (AV:N/AC:L/PR:N/UI:N); discloses device private key (C:H) and hijacks/impersonates the device record (I:H); no direct availability loss stated (A:N).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Oct 22, 2026 - 18:18 EUVD
CVE Published
Oct 22, 2026 - 17:33 cve.org
CRITICAL 9.1

DescriptionCVE.org

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.

Technical POC Analysis

CWE-295: Improper Certificate Validation.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A critical unauthenticated vulnerability in OCO-Server 1.2.0-1.2.2 allows attackers with a device serial number to steal MDM client certificates and private keys, enabling impersonation of managed Apple devices. This could lead to unauthorized access to sensitive device data and disruption of mobile device management, impacting organizational security and compliance.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

Prevalence
Low
niche self-hosted open-source endpoint-management tool, limited enterprise footprint
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2012-1823 CRITICAL POC
9.8 May 11

sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy