Skip to main content

PaddlePaddle PaddleX EUVDEUVD-2026-98276

| CVE-2026-108961 MEDIUM
Code Injection (CWE-94)
2026-10-13 VulDB GHSA-cq2c-fqx9-6r6v
5.3
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

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

  1. Access
    Deliver malicious PaddleX model/config
  2. Exploit
    Victim loads text-detection pipeline
  3. Execution
    scale passed to eval() in NormalizeImage.__init__
  4. Impact
    Arbitrary Python executes in process 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 the attacker to control the 'scale' argument consumed by NormalizeImage.__init__ in the text_detection Preprocessor - in practice this means getting the victim to load an attacker-supplied PaddleX text-detection model or preprocessing config, since scale is normally a numeric config value passed to the vulnerable eval(). Limiting factors: it is not reachable in a default deployment unless the application ingests untrusted model/pipeline configs; the CVSS vector sets UI:P, indicating victim interaction (loading the malicious model/config) is needed; environments that load only first-party, trusted PaddleX models are not exposed.

Impact

This is a CWE-94 code injection caused by PaddleX calling eval() directly on the 'scale' argument in NormalizeImage.__init__ (confirmed by PR #5212, which replaces 'scale = eval(scale)' with a restricted AST-based arithmetic parser). The only input vector is the CVSS 4.0 vector supplied by VulDB (CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N, base 5.3 Medium); there is no EPSS score, no CISA KEV listing, and no public exploit code referenced. The signals partially conflict: VulDB rates impact as only Low across C/I/A, but eval() of attacker-controlled input is arbitrary Python code execution, which normally warrants High impact - the Low rating appears to understate the technical impact. More importantly, VulDB marks this AV:N/PR:N ('initiate the attack remotely') while the sink is a preprocessing config parameter consumed when a model/pipeline config is loaded, so realistic exploitation depends on the victim loading an attacker-supplied model or config (reflected in UI:P). Net assessment: real but conditional - this is not a drive-by unauthenticated RCE against a default service; it is a code-execution-via-untrusted-model-config flaw. Treat as a priority only for environments that load third-party or user-supplied PaddleX pipelines/models; low urgency where all model configs are trusted. Note the fix PR 'awaits acceptance,' so a merged release patch may not yet be available.

Exploit ScenarioDerived

An attacker crafts a malicious PaddleX text-detection model or preprocessing configuration in which the NormalizeImage 'scale' value is a Python expression rather than a number. When a victim loads that pipeline/model, the vulnerable eval(scale) executes the embedded expression as arbitrary Python code in the application's context. No public exploit code is referenced, but the eval() sink is trivial to trigger once scale is attacker-controlled.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% 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 PaddlePaddle PaddleX through version 3.7.2 allows an attacker to execute arbitrary Python code by supplying a crafted 'scale' value that the text-detection preprocessing component passes to a bare eval() call. The flaw is not reachable in a default deployment: it requires the victim to load an attacker-controlled PaddleX text-detection model or pipeline configuration, which is why the assessed vector carries User Interaction (UI:P) and a local attack vector despite high confidentiality, integrity, and availability impact. No public exploit code has been identified at time of analysis, and the upstream fix (PR #5212) is still awaiting acceptance, so no released patched version is independently confirmed.

RemediationAI

Upstream fix available (PR/commit); released patched version not independently confirmed. The corrective change is GitHub pull request https://github.com/PaddlePaddle/PaddleX/pull/5212, which substitutes a restricted AST-based arithmetic parser (_parse_scale) for the vulnerable 'scale = eval(scale)' call in NormalizeImage.__init__; because that PR awaits acceptance, administrators should track https://github.com/PaddlePaddle/PaddleX/issues/5210 for the version in which it lands and upgrade beyond 3.7.2 as soon as a tagged release containing it is published. Until then, apply the PR diff locally if you build PaddleX from source, since the change is self-contained and low-risk (it only narrows the accepted syntax for 'scale'). As compensating controls, never load text-detection model bundles, pipeline YAML/JSON configs, or preprocessing definitions from untrusted or third-party sources, since exploitation hinges entirely on the attacker controlling the 'scale' configuration value; validate and coerce 'scale' to a numeric type in your own wrapper code before it reaches PaddleX; and run PaddleX inference in a sandboxed or least-privileged process (container, seccomp/AppArmor profile, no ambient credentials, restricted outbound network) so that a successful eval() cannot pivot. Note the trade-offs: dropping third-party model/config support removes functionality that many pipelines rely on, and input validation wrappers only protect the code paths you control, so neither fully substitutes for the upstream fix.

Affected VersionsENISA

PaddleX 3.7.0
PaddleX 3.7.1
PaddleX 3.7.2

Affected Packages

euvd paddlex no fix

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

PaddleX is a low-code deep learning pipeline toolkit built on PaddlePaddle, where text-detection inference behavior is driven by configurable preprocessor classes. In paddlex/inference/models/text_detection/processors.py, NormalizeImage.__init__ took the user-supplied 'scale' configuration value and passed it directly to Python's eval() (line 'scale = eval(scale)'), a CWE-94 (Improper Control of Generation of Code / Code Injection) pattern that executes whatever expression the configuration supplies rather than merely parsing a number. Because PaddleX pipelines are typically described in YAML/JSON model or preprocessing configs, anyone able to influence that config (or distribute a malicious model bundle) can achieve arbitrary Python execution in the process that loads it. The proposed fix in PR #5212 replaces eval() with a restricted AST-based parser, _parse_scale(), which permits only numeric constants, unary plus/minus, and the binary operators +, -, *, /, rejects any other node type, and validates the result with math.isfinite() before accepting it. The affected CPE (cpe:2.3:a:paddlepaddle:paddlex:*:*:*:*:*:*:*:*) covers all PaddleX releases with no version bound, consistent with the description stating 'up to 3.7.2'.

Know when Paddlepaddle 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 (VulDB) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
vuln.today AI 7.8 HIGH

eval() on an attacker-controlled config value yields full arbitrary code execution (C/I/A:H), but requires the victim to load an untrusted model/config, so AV:L and UI:R.

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

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A flaw has been found in PaddlePaddle PaddleX up to 3.7.2. Affected by this vulnerability is the function NormalizeImage.__init__ of the file paddlex/inference/models/text_detection/processors.py of the component Preprocessor. This manipulation of the argument scale causes code injection. It is possible to initiate the attack remotely. The pull request to fix this issue awaits acceptance.

Threat Intelligence Overview

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Medium
popular PaddlePaddle ML toolkit, but a developer/inference library not ubiquitous infra
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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.

CVE-2024-0917 CRITICAL POC
9.8 Mar 07

remote code execution in paddlepaddle/paddle 2.6.0. Rated critical severity (CVSS 9.8), this vulnerability is remotely e

CVE-2023-38673 CRITICAL POC
9.8 Jul 26

PaddlePaddle before 2.5.0 has a command injection in fs.py. Rated critical severity (CVSS 9.8), this vulnerability is re

CVE-2023-38671 CRITICAL POC
9.8 Jul 26

Heap buffer overflow in paddle.trace in PaddlePaddle before 2.5.0. Rated critical severity (CVSS 9.8), this vulnerabilit

CVE-2023-38669 CRITICAL POC
9.8 Jul 26

Use after free in paddle.diagonal in PaddlePaddle before 2.5.0. Rated critical severity (CVSS 9.8), this vulnerability i

CVE-2022-46742 CRITICAL POC
9.8 Dec 07

Code injection in paddle.audio.functional.get_window in PaddlePaddle 2.4.0-rc0 allows arbitrary code execution. Rated cr

CVE-2022-45908 CRITICAL POC
9.8 Nov 26

In PaddlePaddle before 2.4, paddle.audio.functional.get_window is vulnerable to code injection because it calls eval on

CVE-2022-31523 CRITICAL POC
9.3 Jul 11

The PaddlePaddle/Anakin repository through 0.1.1 on GitHub allows absolute path traversal because the Flask send_file fu

CVE-2024-0818 CRITICAL POC
9.1 Mar 07

Arbitrary File Overwrite Via Path Traversal in paddlepaddle/paddle before 2.6. Rated critical severity (CVSS 9.1), this

CVE-2022-46741 CRITICAL POC
9.1 Dec 07

Out-of-bounds read in gather_tree in PaddlePaddle before 2.4. Rated critical severity (CVSS 9.1), this vulnerability is

CVE-2024-0815 HIGH POC
8.8 Mar 07

Command injection in paddle.utils.download._wget_download (bypass filter) in paddlepaddle/paddle 2.6.0. Rated high sever

CVE-2024-0817 HIGH POC
7.8 Mar 07

Command injection in IrGraph.draw in paddlepaddle/paddle 2.6.0. Rated high severity (CVSS 7.8), this vulnerability is lo

CVE-2024-0521 HIGH POC
7.8 Jan 20

Code Injection in paddlepaddle/paddle. Rated high severity (CVSS 7.8), this vulnerability is low attack complexity. Publ

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