Skip to main content

dataclasses-avroschema CVE-2026-108379

| EUVDEUVD-2026-98975 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
    Deliver crafted Avro schema with malicious fixed namespace
  2. Delivery
    Victim runs model generator (parse_fixed)
  3. Exploit
    Quote escapes confixed annotation string
  4. Execution
    Injected expression written into generated class
  5. Persist
    Python evaluates annotation on class definition
  6. Impact
    Arbitrary 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 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

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

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

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

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:P/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 - 19:19 EUVD
CVE Published
Oct 13, 2026 - 17:40 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 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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
niche Python Avro code-generation library, specialized developer tooling footprint
Social Media
1
Sightings
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.3%
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
None
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