Skip to main content

Marshmallow CVE-2025-68480

MEDIUM
Asymmetric Resource Consumption (Amplification) (CWE-405)
2025-12-22 security-advisories@github.com
5.3
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Reach endpoint using Schema.load(many=True)
  2. Delivery
    Send moderately sized crafted array payload
  3. Exploit
    Trigger quadratic error-collection rebuilding
  4. Execution
    Exhaust server CPU
  5. Impact
    Degrade or deny service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Asymmetric resource consumption control
Exploitation Conditions

Exploitable only when the target application calls Schema.load(data, many=True) on attacker-influenced input and runs a vulnerable version (>=3.0.0rc1 <3.26.2 or >=4.0.0 <4.1.2); the CPU blowup occurs in the error-merging path, so inputs that generate validation errors across list items are what drive the disproportionate cost. Limiting factors: the application must expose a many=True load of untrusted data (library-internal code using single-object load or trusted input is not affected), and impact is confined to availability (CPU exhaustion) with no data or integrity consequence. The published workaround (validate list type and load items individually) neutralizes the condition without upgrading.

Impact

This is a genuine but moderate-severity denial-of-service issue, not a critical priority. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, base 5.3) indicates a network-reachable, unauthenticated, low-complexity attack with no confidentiality or integrity impact and only LOW availability impact - consistent with CWE-405 (asymmetric resource consumption) and the GHSA description that a 'moderately sized request can consume a disproportionate amount of CPU time.' The signals are mutually consistent and lean toward lower real-world urgency: EPSS is only 0.30% (21st percentile), the CVE is NOT in CISA KEV, and no public exploit code is referenced - only a patch commit and vendor advisory. There is no SSVC decision data in the input. The realistic risk is confined to availability degradation of Python services that call Schema.load(data, many=True) on attacker-controlled input; it does not enable code execution or data disclosure. Net assessment: a legitimate hardening/patching item for exposed APIs, but a high-CVSS-style emergency it is not - treat as routine-to-elevated based on exposure of affected endpoints.

Exploit ScenarioDerived

An attacker sends a moderately sized but crafted JSON array to an HTTP API endpoint that deserializes input with marshmallow's Schema.load(data, many=True). The vulnerable error-merging logic repeatedly rebuilds error collections during validation, consuming disproportionate CPU and degrading or denying service for legitimate users. No public exploit code is identified at time of analysis, though the vendor advisory (GHSA-428g-f7cq-pgp5) publishes a fail-fast workaround.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 19, 2026

Denial of service in the Marshmallow Python serialization library affects versions 3.0.0rc1 through 3.26.1 and 4.0.0 through 4.1.1 when an application calls Schema.load(data, many=True) on untrusted input; a moderately sized list of invalid records consumes a disproportionate amount of CPU time because the error-merging routine repeatedly rebuilds result collections. Remote attackers who can reach an endpoint that performs bulk deserialization and returns validation errors can drive CPU exhaustion and degrade or stall the service, with no confidentiality or integrity impact. No public exploit code was identified at time of analysis and the issue is not in CISA KEV, though EPSS places it in the low range (0.30%, ~21st percentile). The library ships fixes in 3.26.2 and 4.1.2.

RemediationAI

Vendor-released patch: upgrade to Marshmallow 3.26.2 or 4.1.2 (pip install --upgrade 'marshmallow>=3.26.2' for the 3.x line, or 'marshmallow>=4.1.2' for 4.x) as documented in advisory GHSA-428g-f7cq-pgp5 and commit d24a0c9df061c4daa92f71cf85aca25b83eee508; the fix removes the repeated collection rebuilding in error_store.merge_errors and deep-copies stored messages once. If an immediate upgrade is not possible, the vendor-published workaround is to fail fast on type before bulk loading: check that the incoming payload is a list (raise ValidationError(['Invalid input type.']) if not) and then call load on each item individually in a loop - the trade-off is that this changes error semantics, since per-item loading typically raises on the first failing record instead of returning an aggregated error map for all items, which may break API contracts that surface all validation errors at once; wrap the loop to collect per-item exceptions if aggregated errors are required. As a compensating control, apply request-size and rate limits at the gateway or web framework layer on any endpoint backed by many=True deserialization, and cap the maximum list length accepted, accepting that this only bounds rather than eliminates the per-request CPU amplification. No vendor patch is needed for applications that only use single-object load, but inventorying call sites of Schema.load(..., many=True) that touch untrusted input is the fastest way to scope exposure.

Affected Packages

pypi marshmallow fix: 3.26.2, 4.1.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in pypi

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

Technical ContextAI · show details

Marshmallow is a widely used Python library for object serialization/deserialization and validation, commonly used to parse JSON request bodies into schema-validated objects in Flask, Django REST Framework and similar stacks. The flaw maps to CWE-405 (Asymmetric Resource Consumption / Amplification): in src/marshmallow/error_store.py, the merge_errors helper accumulated validation messages by returning a newly built dict or list on every merge (dict(errors1, **{...}), errors1 + errors2, [*errors1, errors2], and a full copy-and-loop over keys when merging mappings, each iteration itself calling merge_errors recursively). Under Schema.load(data, many=True) the store merges the error structures produced for every item in the submitted list, so inputs that generate a validation error per item cause the accumulated message tree to be re-copied on each merge, producing super-linear (effectively quadratic) CPU cost and deep recursive merging relative to the size of the request. The upstream commit d24a0c9d adds a copy_containers() helper that deep-copies input messages exactly once before storage, then rewrites merge_errors to mutate the accumulator in place (extend/append/assignment) instead of rebuilding dictionaries and lists, which removes the repeated copying while preserving the merged error output. The accompanying regression tests assert that caller-supplied message objects are no longer mutated by repeated store_error calls. Notably, the vulnerable path is in error handling rather than parsing, so a payload only becomes expensive when it is malformed enough to trigger validation failures across many list items.

Know when Marshmallow 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) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

Network-reachable unauthenticated input to a many=True load (AV:N/AC:L/PR:N/UI:N) with only CPU-exhaustion availability impact and no C/I impact, so A:L.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

DescriptionCVE.org

Marshmallow is a lightweight library for converting complex objects to and from simple Python datatypes. In versions from 3.0.0rc1 to before 3.26.2 and from 4.0.0 to before 4.1.2, Schema.load(data, many=True) is vulnerable to denial of service attacks. A moderately sized request can consume a disproportionate amount of CPU time. This issue has been patched in version 3.26.2 and 4.1.2.

Threat Intelligence Overview

EPSS Score
0.3%
Top 79% exploitable
Prevalence
High
marshmallow is an extremely popular Python serialization/validation library in web APIs
Data Quality
4 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

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