Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as Contributor on source site
-
DeliveryStore serialized PHP object in post meta
-
ExploitDistribute post to connected destination
-
Executionset_meta() double-unserializes the payload
-
ImpactInstantiate attacker objects via available gadget chain
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Contributor-level (or higher) account on a source WordPress site that has Distributor configured to push or pull content to a connected destination site; the attacker stores a serialized-PHP-shaped string as post meta that the vulnerable set_meta() then unserializes a second time on the destination. Meaningful impact is strictly gated by the presence of an exploitable PHP gadget (POP) chain in the destination site's loaded plugins/themes - without such a gadget, object instantiation has little effect. Limiting factors: authenticated Contributor privilege (PR:L), high attack complexity and a present attack requirement (AC:H/AT:P), a configured site-to-site distribution relationship, and the dependency on available gadget classes; affected versions are Distributor before 2.3.2. |
| Impact | This is a genuinely low-priority issue despite being a CWE-502 PHP object injection flaw. The vendor-supplied CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:L/UI:N) scores only 2.3, and the signals are internally consistent: it is network-reachable but requires an authenticated Contributor-level account (PR:L), has high attack complexity (AC:H) and a present attack requirement (AT:P), and yields only Low confidentiality/integrity/availability impact with no scope change (SC:N/SI:N/SA:N). The critical mitigating factor is explicit in the description - impact 'depends on loaded gadget classes,' so without a usable POP gadget chain in the destination site's loaded code the injected object does nothing dangerous. No EPSS score, KEV listing, SSVC decision, or public POC is present in the provided data; there is no public exploit identified at time of analysis. The low-privilege-but-authenticated requirement plus gadget dependency explains the low rating - this is a defense-in-depth hardening fix rather than a widespread exploitation threat. No conflicting signals were observed; the CVSS network vector is reconcilable with the WordPress multisite push/pull distribution model, where a Contributor on one site causes code execution on a connected destination site. |
| Exploit ScenarioDerived | An attacker with a Contributor account on a Distributor-connected source site stores a crafted serialized PHP string in a post's meta, then has that post distributed (pushed/pulled) to a destination site where set_meta() in includes/utils.php unserializes the already-unserialized value a second time, instantiating attacker-controlled objects. Meaningful harm occurs only if an exploitable gadget chain (POP chain) is present in the destination's loaded plugins/themes; absent a gadget, impact is limited. No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 16, 2026
PHP object injection in 10up Distributor before 2.3.2 allows an authenticated Contributor-level user on a connected source WordPress site to store a serialized-PHP-shaped string as post meta, which the destination site's set_meta() function in includes/utils.php then unserializes a second time, instantiating attacker-influenced objects on the receiving site. Real-world impact is heavily gated: exploitation requires a configured Distributor push/pull relationship between two sites and a usable PHP gadget (POP) chain in the destination's loaded plugins or themes, otherwise object instantiation accomplishes little. Tracked as CWE-502 with a CVSS 4.0 base score of 2.3 (independent assessment: CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L) and no public exploit identified at time of analysis, this is a low-priority hardening issue rather than an urgent, actively exploited flaw.
RemediationAI
Vendor-released patch: upgrade 10up Distributor to 2.3.2 or later (https://github.com/10up/distributor/releases/tag/2.3.2), which removes the redundant maybe_unserialize() call in set_meta(); the fix corresponds to commit 7c57edb774d80534885ca6f2c46b95d333de6e5a and advisory GHSA-wm53-9j85-ph6h. If an immediate upgrade is not possible, apply the same change manually by deleting the maybe_unserialize() block in includes/utils.php around lines 192-200, noting the side effect that any site relying on Distributor to re-inflate already-serialized meta strings will change behavior, so test push/pull round-trips first. Because the vector requires PR:L, an effective compensating control is to audit and tighten WordPress roles on any site with Distributor connections configured - removing Contributor or higher privileges from untrusted users, or restricting distribution connections to trusted sites so that only administrators can trigger pushes - at the cost of limiting legitimate contributor workflows. Reducing the destination site's attack surface by removing plugins or themes containing known POP gadget chains (magic methods such as __destruct, __wakeup, __toString) lowers the likelihood of a chain being assembled, though this is disruptive and hard to verify exhaustively. Monitoring post meta writes for strings matching the serialized-data pattern is a detection measure rather than a fix, and no public exploit code has been identified at time of analysis, so prioritization can stay proportionate to the low CVSS 2.3 rating.
Affected VersionsENISA
Affected Packages
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
CWE-502 (Deserialization of Untrusted Data) in the WordPress plugin 10up Distributor, mapped by CPE cpe:2.3:a:10up:distributor:*:*:*:*:*:*:*:* covering all releases prior to 2.3.2. The vulnerability is a double-unserialize defect: on the sending site, meta values are already passed through prepare_meta(), which unserializes them once; when the distributed post meta arrives at the destination, set_meta() in includes/utils.php (source lines 192-200 in the 2.3.1 tag) performed an additional maybe_unserialize() call on any non-array value. Because WordPress's maybe_unserialize() simply checks is_serialized() and invokes PHP's unserialize() with no allowed_classes restriction, a Contributor who deliberately stores a string that looks like a serialized payload (for example 'a:1:{s:1:"a";i:1;}') has that string turned into live PHP objects on the destination site. The vendor fix commit 7c57edb774d80534885ca6f2c46b95d333de6e5a removes the redundant maybe_unserialize() block entirely, with tests confirming that serialized-data-shaped strings and arrays are now stored as-is. As with any PHP object injection, code execution or other severe outcomes are only reachable if the destination site loads a class exposing a magic method (__wakeup, __destruct, __toString) that participates in a usable gadget chain; absent such a chain, the practical effect is limited object instantiation.
Know when Distributor 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
CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Network-reachable via distribution but needs a Contributor account (PR:L) and a gadget chain for impact (AC:H); impacts capped at Low and no scope change since execution stays on the destination site.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
10up Distributor before 2.3.2 contains a PHP object injection vulnerability that allows Contributor-level users to instantiate PHP objects by double unserializing distributed post meta. Attackers can store a serialized PHP string as meta, which set_meta() in includes/utils.php unserializes on the destination site, storing attacker-defined objects whose impact depends on loaded gadget classes.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
More in Distributor
View allMissing authorization in the 10up Distributor WordPress plugin before 2.3.2 allows authenticated users with Contributor-
Authenticated Contributor-level users on a WordPress multisite network running 10up Distributor before 2.3.2 can create
EUVD-2026-103050
GHSA-p88q-h74f-qxvq
NVD
CVE.org
EPSS
Exploit-DB