Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach PyFory deserialization endpoint
-
DeliveryCraft malicious reduce-state payload
-
ExploitReduceSerializer skips DeserializationPolicy check
-
ExecutionResolve disallowed global/callable
-
PersistReconstruct unsafe object
-
ImpactExecute code in app context
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 | Exploitation requires that the target application (1) deserializes attacker-controlled data using PyFory's Python-native serialization mode, (2) has strict mode DISABLED, and (3) relies on DeserializationPolicy to restrict unsafe classes, functions, or module attributes - the exact control that ReduceSerializer bypasses. The malicious payload must reach a ReduceSerializer reduce-state restoration or global-name resolution path. Limiting factors: applications running with strict mode enabled, not using Python-native mode, not exposing deserialization to untrusted input, or not depending on DeserializationPolicy as a security boundary are not exploitable; this is a non-default, security-configuration-dependent condition rather than a flaw in every PyFory deployment, which is consistent with the very low EPSS despite the 9.8 CVSS. |
| Impact | Signals conflict and must be weighed carefully. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N, C:H/I:H/A:H = 9.8) and SSVC (Automatable: yes, Technical Impact: total) point to a severe, easily weaponizable deserialization-to-RCE class of bug. However, EPSS is only 0.04% (13th percentile), SSVC Exploitation is 'none', it is not in CISA KEV, and no POC has surfaced - so real-world exploitation is currently unobserved. Critically, the raw CVSS AC:L understates a real precondition: the target application must be deserializing attacker-controlled data in Python-native mode WITH strict mode disabled AND relying on DeserializationPolicy as its safety net. That non-default, security-dependent configuration meaningfully narrows the exposed population, so this is best treated as a high-priority patch for teams actually using PyFory's policy-based sandboxing, rather than an internet-wide emergency. Note the tension: CVSS marks AC:L/PR:N but the description implies a specific insecure configuration is required - verify your deployment mode before prioritizing. |
| Exploit ScenarioDerived | An application uses PyFory in Python-native mode with strict mode disabled and depends on DeserializationPolicy to block dangerous classes while deserializing data received over the network (e.g., a cache, message queue, or API payload). An attacker submits a crafted serialized blob whose reduce-state or global-name resolution references a disallowed callable; because ReduceSerializer skips the policy hook, the object is reconstructed and attacker-controlled code executes in the application's context. No public POC has been identified, but SSVC rates the attack as automatable with total technical impact. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Insecure deserialization in Apache Fory's PyFory (Python) library allows remote attackers to bypass DeserializationPolicy validation hooks via the ReduceSerializer, letting untrusted classes, functions, or module attributes be restored despite policy restrictions. All PyFory releases before 1.0.0 are affected when running Python-native mode with strict mode disabled, enabling attacker-controlled data to instantiate unsafe objects and achieve code execution. There is no public exploit identified at time of analysis and EPSS probability is very low (0.04%), but CVSS is 9.8 and SSVC rates technical impact as total with automatable exploitation.
RemediationAI
Vendor-released patch: upgrade Apache Fory / PyFory to version 1.0.0 or later, which enforces DeserializationPolicy validation across the affected ReduceSerializer reduce-state and global-name-resolution paths, per the Apache advisory (https://fory.apache.org/security/#cve-2026-48207-pyfory-reduceserializer-deserializationpolicy-bypass). If you cannot upgrade immediately, enable PyFory strict mode so that reduce-based reconstruction is disallowed rather than relying on the bypassable DeserializationPolicy (trade-off: strict mode may reject legitimate custom objects that depend on reduce semantics, potentially breaking application deserialization). Additionally, stop deserializing untrusted or attacker-reachable data with PyFory Python-native mode entirely, or place such deserialization behind authenticated, trusted-source-only channels (trade-off: requires validating every producer of serialized payloads). Do not depend on DeserializationPolicy allow/deny lists as your sole control on affected versions, since that is precisely the mechanism being bypassed.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache Fory is a high-performance multi-language serialization framework; PyFory is its Python implementation. This flaw (CWE-502, Deserialization of Untrusted Data) resides in the ReduceSerializer path, which handles Python's reduce-based object reconstruction (analogous to pickle's __reduce__ protocol) and global-name resolution. DeserializationPolicy is Fory's allow/deny mechanism intended to gate which classes, functions, and module attributes may be reconstructed; the vulnerability is that ReduceSerializer's reduce-state restoration and global-name resolution paths did not consistently invoke those validation hooks, so the security control could be silently bypassed. The affected CPE is cpe:2.3:a:apache_software_foundation:apache_fory:*, and the issue is specific to Python-native serialization mode rather than cross-language modes.
Know when Apache Fory 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
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Network-reachable deserialization yielding RCE (C/I/A:H, PR:N), but AC:H because exploitation requires the non-default combination of Python-native mode, strict mode disabled, and reliance on DeserializationPolicy.
Primary rating from Vendor (apache).
CVSS VectorVendor: apache
Lifecycle Timeline
3DescriptionCVE.org
Deserialization of untrusted data in Apache Fory PyFory. PyFory's ReduceSerializer could bypass documented DeserializationPolicy validation hooks during reduce-state restoration and global-name resolution. An application is vulnerable if it deserializes attacker-controlled data using PyFory Python-native mode with strict mode disabled and relies on DeserializationPolicy to restrict unsafe classes, functions, or module attributes.
This issue affects Apache Fory: from before 1.0.0.
Mitigation: Users of Apache Fory are recommended to upgrade to version 1.0.0 or later, which enforces DeserializationPolicy validation for the affected ReduceSerializer paths and thus fixes this issue.
Executive ViewAI
Apache Fory's PyFory library (versions before 1.0.0) contains a critical vulnerability enabling remote code execution on affected systems when processing untrusted data. Any organization deploying PyFory for data processing or integration tasks faces potential system compromise and unauthorized access. Immediate patching is required despite the current lack of public exploits, given the severity of the underlying flaw.
Apply vendor patch.
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 Apache Fory
View allRemote code execution risk in Apache Fory (the Java serialization framework formerly known as Fury) before 1.4.0 arises
Heap type confusion in the Apache Fory C++ deserialization engine (versions 0.14.0 up to but not including 1.5.0) lets a
Denial of service in the Go implementation of Apache Fory allows unauthenticated remote attackers to crash affected serv
Memory disclosure and denial-of-service in Apache Fory's Rust deserialization path (versions 0.13.0 through 1.3.0) let r
Out-of-bounds heap read in Apache Fory C++ versions 0.14.0 through 1.4.x allows attackers supplying crafted deserializat
EUVD-2026-31292
GHSA-m5gw-83w2-7749
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB