Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft Avro schema with bare-string fixed aliases
-
DeliveryDeliver via schema registry or repo
-
Exploitparse_fixed emits unquoted annotation
-
ExecutionGenerated module imported and evaluated
-
ImpactArbitrary code execution in victim process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
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 victim use the library's Avro-to-Python model generation feature (BaseGenerator/parse_fixed path) on an attacker-supplied schema containing a fixed type whose 'aliases' value is a bare string rather than a list, and then import the generated module - the arbitrary code executes at module import time. Limiting factors: the vulnerable direction is schema-to-code generation (not the more common dataclass-to-schema direction), the attacker must control the schema content, and a victim action (running the generator and importing/executing its output) is required, consistent with UI:R. Only versions 0.38.0 through 0.70.5 are affected; 0.70.6 rejects non-list aliases and is not exploitable. |
| Impact | This is a genuine high-priority code-execution flaw (CWE-94) rather than an inflated high-CVSS score, but its real-world risk is gated by a usage precondition. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, 8.8) correctly captures that no attacker privileges are needed and that impact is full compromise (C:H/I:H/A:H), while the UI:R flag accurately reflects that a victim must process an attacker-controlled schema. The AV:N is reasonable because Avro schemas are routinely pulled from remote sources (schema registries, Kafka topics, third-party repos), but exploitation is not fully remote-automatic: it depends on the victim actually invoking the ModelGenerator code-generation path and importing the generated module. No EPSS score, KEV entry, or published POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the only exploitation enabler present is the fix commit diff, which discloses the vulnerable code path and could aid reverse-engineering of an exploit. Net assessment: a serious, low-complexity RCE for any workflow that generates Python from untrusted Avro schemas, but confined to that specific code-generation feature rather than the far more common schema-generation direction, which keeps aggregate exposure below what the 8.8 alone implies. |
| Exploit ScenarioDerived | An attacker publishes or injects a crafted Avro schema in which a fixed type's 'aliases' field is a bare string (e.g. an arbitrary Python expression) instead of a list. When a developer or automated pipeline runs dataclasses-avroschema's model generator against that schema and imports the resulting module, the unquoted string is evaluated as Python, executing attacker code in the victim's process. No public exploit is identified in the provided data, though the fix commit publicly reveals the vulnerable parse_fixed path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Arbitrary code execution in dataclasses-avroschema 0.38.0 through 0.70.5 occurs when the library's Avro-to-Python model generator processes a schema containing a fixed type whose 'aliases' value is a bare string instead of a list; the value is interpolated unquoted into a generated 'types.confixed' annotation and evaluated when the generated module is imported, giving an attacker code execution in the victim's Python process. Exploitation is unauthenticated from the network perspective (CVSS:3.1/AV:N/AC:L/PR:N/UI:R) but gated on victim interaction: someone must run the schema-to-code generation path on attacker-controlled schema content and then import the resulting module. There is no public exploit code identified at time of analysis and no confirmed active exploitation (CISA KEV), so this is a high-severity but precondition-gated code-injection flaw; the vendor released 0.70.6, which rejects non-list aliases.
RemediationAI
Upgrade to dataclasses-avroschema 0.70.6, the vendor-released patch, which validates that a fixed type's 'aliases' is a list and raises InvalidSchemaValue rather than emitting the value as code; the change is in commit 429f3d705d2d04c0c65e2ef832daed5ff91318fc and is described in advisory GHSA-9h8h-264x-jcg2. If upgrading is not immediately possible, the most direct compensating control is to validate every schema before it reaches the generator: require that any fixed type's 'aliases' is a JSON array of strings (reject bare strings and non-list values), or strip the 'aliases' key from untrusted fixed types entirely before generation - the trade-off is that schemas legitimately using string aliases will be rejected or lose alias metadata, which can break schema-registry compatibility and forward/backward resolution. Where schema content cannot be fully trusted, run the generator and import step in a sandboxed process with no network access, no cloud credentials, and a read-only filesystem, and never import generated modules inside a privileged service - this contains the import-time execution but adds operational complexity and may break models that need runtime resources. Note that the vulnerable direction is schema-to-Python generation, so systems that only emit Avro from trusted local dataclasses can deprioritize patching, though upgrading to 0.70.6 is still the recommended end state since the same release hardens other code-position interpolations (enum defaults, record names, Pydantic class names, docstrings, Meta values).
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
Apache Avro schemas are JSON documents; a 'fixed' type declares a byte length and may carry 'aliases'. dataclasses-avroschema normally goes the other direction (Python dataclasses/Pydantic models to Avro), but it also ships the reverse path in dataclasses_avroschema/model_generator/lang/python, where BaseGenerator and its subclasses emit Python source from a supplied schema. The bug is in how the 'aliases' value of a fixed type is rendered into the generated annotation 'types.confixed[...]': a list is rendered with quoted string entries (safe), while a bare string is emitted verbatim as an unquoted Python expression. Because annotations on a generated class are evaluated when that module is imported, a crafted alias such as a call expression is executed at import time, which is the classic CWE-94 code-injection pattern of mixing untrusted schema data into generated code without an escaping or validation layer. The upstream fix (commit 429f3d705d2d04c0c65e2ef832daed5ff91318fc, release 0.70.6) introduces an InvalidSchemaValue exception and a validations module adding validate_aliases, validate_name, validate_fullname, escape_string, escape_docstring and validate_type_expression, so aliases must be a list before being rendered, and other schema-derived values that land in code position (enum defaults, record names, pydantic classes, docstrings, Meta field values) are now escaped or type-checked. Only the schema-to-code generation direction is affected; the common dataclass-to-schema direction is not the vulnerable path.
Know when Python 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:R/S:U/C:H/I:H/A:H
Schema is commonly network-sourced (AV:N) and trivially crafted (AC:L) with no attacker privileges (PR:N), but a victim must generate and import the module (UI:R), yielding full RCE impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
dataclasses-avroschema generates Avro schemas from Python dataclasses, Pydantic models, and Faust Records and generates Python code from Avro schemas. From version 0.38.0 through 0.70.5, BaseGenerator.parse_fixed interpolates a fixed type's aliases value directly into a generated types.confixed annotation. A list is represented with quoted entries, but a bare string is emitted as an unquoted Python expression and evaluated when the generated module is imported, allowing arbitrary code execution from a crafted schema. Version 0.70.6 fixes the vulnerability by rejecting aliases values that are not lists.
Articles & Coverage 1
Technical POC Analysis
Note on evidence: the supplied advisory (GHSA-9h8h-264x-jcg2) attributes this CVE to unescaped field default values.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity code-execution flaw affects dataclasses-avroschema versions 0.38.0 through 0.70.5, allowing a crafted Avro schema to run attacker-controlled code inside the Python process of any team that generates models from that schema and imports the result. The risk sits primarily with internal data platform, integration, and application engineering groups that consume schemas from external partners, tenants, or upstream producers, since a successful compromise could expose credentials, source code, and any data or systems those processes can reach.
Apply vendor patch (dataclasses-avroschema 0.70.6). Where the upgrade cannot be applied immediately, treat externally supplied Avro schemas as untrusted executable content: reject schemas whose fixed types use bare-string 'aliases' values (require a list), import any generated module only inside a sandboxed least-privileged process, and require code review before generated models are imported in production or CI.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-98901
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB