Skip to main content

dataclasses-avroschema EUVDEUVD-2026-98901

| CVE-2026-108375 HIGH
Code Injection (CWE-94)
2026-10-13 GitHub_M
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Craft Avro schema with bare-string fixed aliases
  2. Delivery
    Deliver via schema registry or repo
  3. Exploit
    parse_fixed emits unquoted annotation
  4. Execution
    Generated module imported and evaluated
  5. Impact
    Arbitrary 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

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

dataclasses-avroschema 0.38.0, < 0.70.6

Affected Packages

euvd dataclasses_avroschema fix: 0.70.6

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

Vendor (GitHub_M) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 18:19 EUVD
CVE Published
Oct 13, 2026 - 17:05 cve.org
HIGH 8.8

DescriptionCVE.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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.5%
Top 61% exploitable
Prevalence
Low
niche Python Avro code-generation library, specialized Kafka/schema use
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Code Injection CRITICAL

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

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