Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted Avro schema with malicious fixed namespace
-
DeliveryVictim runs model generator (parse_fixed)
-
ExploitQuote escapes confixed annotation string
-
ExecutionInjected expression written into generated class
-
PersistPython evaluates annotation on class definition
-
ImpactArbitrary code execution in victim context
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 dataclasses-avroschema's model-generation feature (BaseGenerator.parse_fixed path) to generate Python code from an Avro schema whose contents an attacker can influence, specifically a 'fixed' type carrying a crafted namespace value containing a quote character; the resulting code must then be defined/imported for the injected expression to execute. Affected versions are 0.38.0 through 0.70.5. The practical limiter is that this is not a flaw in merely using the library at runtime - the target must feed untrusted schemas through the code generator (UI:R), so deployments that only generate code from trusted, internal schemas are not realistically exploitable; upgrading to 0.70.6 removes the vector by validating the namespace. |
| Impact | This is a legitimately high-impact code-injection flaw (CWE-94) with a confirmed GitHub Security Advisory (GHSA-h9q3-f96w-f88j), a vendor fix commit, and a tagged release (0.70.6), so the technical facts are well-corroborated. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H, base 8.8) indicates a network-reachable, low-complexity, unauthenticated issue that nonetheless requires user interaction - the UI:R is important: exploitation is not automatic but depends on a victim running the code generator over an attacker-influenced Avro schema and then defining the generated class. No CISA KEV listing and no EPSS score were supplied in the input, and no public exploit is referenced, so there is no evidence of active or widespread exploitation; this reads as a credible-but-not-yet-exploited supply-chain/codegen risk rather than an in-the-wild emergency. The gap between a high CVSS (8.8) and the absence of KEV/EPSS/POC signals suggests priority should be driven by whether an organization actually consumes untrusted Avro schemas through this library's code generator, not by the raw score alone. No key signals conflict with each other, but EPSS and exploitation-status data are simply missing and should be checked before final triage. |
| Exploit ScenarioDerived | An attacker supplies a malicious Avro schema (for example, one fetched from a registry, uploaded by a user, or pulled from an untrusted repository) containing a 'fixed' type whose namespace embeds a crafted quote character. When a developer or automated pipeline runs dataclasses-avroschema's model generator to turn that schema into Python code, the namespace breaks out of the types.confixed string literal and injects an arbitrary expression. The injected expression executes the moment the generated class is defined/imported, yielding arbitrary code execution; no public exploit code was referenced in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Code injection in dataclasses-avroschema 0.38.0 through 0.70.5 lets an attacker-influenced Avro schema execute arbitrary Python when the library's model generator renders a 'fixed' type's namespace into generated source. BaseGenerator.parse_fixed interpolates the namespace between quotes inside a generated types.confixed annotation without escaping, so a namespace containing a quote character terminates the string literal and turns the remainder into live Python that runs when the generated class is defined or the generated module is imported; the assessed vector is CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H (8.8), unauthenticated over the network but requiring the victim to run code generation on the crafted schema and then import the result. The flaw is fixed in 0.70.6, which enforces that namespaces are dot-separated sequences of valid Avro names; no public exploit code was identified at time of analysis and the issue is not in CISA KEV, but the high CVSS score, confirmed GHSA-h9q3-f96w-f88j advisory, and availability of a vendor fix commit make prompt upgrading advisable for anyone generating code from externally sourced schemas.
RemediationAI
Upgrade to dataclasses-avroschema 0.70.6, the vendor-released patch that requires the fixed type's namespace to be a dot-separated sequence of valid Avro names and rejects offending schemas with the new InvalidSchemaValue exception (release: https://github.com/marcosschroh/dataclasses-avroschema/releases/tag/0.70.6; fix commit: https://github.com/marcosschroh/dataclasses-avroschema/commit/429f3d705d2d04c0c65e2ef832daed5ff91318fc; advisory: https://github.com/marcosschroh/dataclasses-avroschema/security/advisories/GHSA-h9q3-f96w-f88j). If an immediate upgrade is not possible, the most effective compensating control is to never run the model generator over schemas that are not fully trusted or schema-registry-controlled: reject or sanitize any 'fixed' type whose namespace is not a strict dot-separated Avro full name before invoking BaseGenerator (a blocking control with no functional downside for well-formed schemas, but it must be applied on every code path and will break schemas that legitimately use unusual namespaces). Additionally, run code generation in a sandboxed, credential-free process or container with no network access and treat generated modules as untrusted artifacts requiring review before import (adds a pipeline step and can break automated codegen workflows); pinning to a pre-0.38.0 release also removes the vector but forfeits ~32 minor versions of features and other fixes. Because the injected expression executes at class-definition/import time, static review of generated .py files before import, or disabling automatic compilation/import-on-load in consuming services, provides a secondary containment layer for deployments that cannot patch quickly.
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
dataclasses-avroschema (CPE cpe:2.3:a:marcosschroh:dataclasses-avroschema) is a Python library that generates Avro schemas from Python dataclasses, Pydantic models, and Faust Records, and performs the reverse operation: generating Python model source from an Avro schema via its BaseGenerator classes. The vulnerable path, parse_fixed, handles Avro 'fixed' types (fixed-length byte types with a name and namespace) by emitting a class annotation of the form types.confixed("<namespace>", ...) into the generated module. Because the namespace value is spliced directly between double quotes with no escaping and no validation, a namespace containing a double quote closes the string literal and injects arbitrary expressions into the annotation; Python evaluates annotations when the class body is executed, so importing or defining the generated model executes the injected code. This is a textbook CWE-94 (Improper Control of Generation of Code) instance: untrusted schema data is treated as trusted source syntax. The vendor fix (commit 429f3d705d2d04c0c65e2ef832daed5ff91318fc, released in 0.70.6) adds a validations module with functions such as escape_string, escape_docstring, validate_name, validate_fullname, validate_aliases, and validate_type_expression, introduces a new InvalidSchemaValue exception for any value that is rendered as code rather than as a string literal, and applies the same defense to the avrodantic model generator (pydantic class references), enum defaults, record names, aliases, and metadata/docstring rendering - closing several sibling injection sinks of the same class, not only the fixed-namespace one.
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 can arrive over the network and needs no auth (AV:N/PR:N), but a victim must run codegen on the malicious schema (UI:R), and resulting RCE gives full C/I/A impact in the victim's process (S:U).
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 inserts a fixed type's namespace value between quotes inside a generated types.confixed annotation without escaping or validating it. A crafted quote can terminate the namespace string and alter the surrounding annotation expression, which Python evaluates when the generated class is defined, allowing arbitrary code execution. Version 0.70.6 fixes the vulnerability by requiring the namespace to be a dot-separated sequence of valid Avro names.
Articles & Coverage 1
Technical POC Analysis
CWE-94 (Improper Control of Generation of Code).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
dataclasses-avroschema versions 0.38.0 through 0.70.5 contain a code injection flaw that lets a crafted Avro schema execute arbitrary Python in any environment where the library generates or imports model classes. Because the library is typically embedded in data pipelines and services that ingest schemas from external, partner, or customer-controlled sources, a single malicious schema could yield full compromise of the host process along with the credentials and data it can reach. Leadership should care because remediation spans every team shipping this dependency, and the exposure is unauthenticated over the network, requiring only that a developer or pipeline runs code generation on the crafted schema and imports the result.
Apply vendor patch (0.70.6). Until every component is upgraded, restrict Avro schema ingestion to trusted publishers, validate that namespaces are dot-separated sequences of valid Avro names, and run code generation in an isolated sandbox without production credentials or outbound network access.
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-98975
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB