Skip to main content

10up Distributor EUVDEUVD-2026-103050

| CVE-2026-111628 LOW
Deserialization of Untrusted Data (CWE-502)
2026-10-16 VulnCheck GHSA-p88q-h74f-qxvq
2.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as Contributor on source site
  2. Delivery
    Store serialized PHP object in post meta
  3. Exploit
    Distribute post to connected destination
  4. Execution
    set_meta() double-unserializes the payload
  5. Impact
    Instantiate 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

Distributor 0 <2.3.2

Affected Packages

euvd distributor fix: 2.3.2

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

Vendor (VulnCheck) PRIMARY 2.3 LOW
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
vuln.today AI 5.0 MEDIUM

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.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche WordPress content-syndication plugin, limited multisite/agency deployment footprint
Data Quality
3 sources
Confidence: Low

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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

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.

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