Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver malicious PaddleX model/config
-
ExploitVictim loads text-detection pipeline
-
Executionscale passed to eval() in NormalizeImage.__init__
-
ImpactArbitrary 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
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.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
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
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.
More in Paddlepaddle
View allremote code execution in paddlepaddle/paddle 2.6.0. Rated critical severity (CVSS 9.8), this vulnerability is remotely e
PaddlePaddle before 2.5.0 has a command injection in fs.py. Rated critical severity (CVSS 9.8), this vulnerability is re
Heap buffer overflow in paddle.trace in PaddlePaddle before 2.5.0. Rated critical severity (CVSS 9.8), this vulnerabilit
Use after free in paddle.diagonal in PaddlePaddle before 2.5.0. Rated critical severity (CVSS 9.8), this vulnerability i
Code injection in paddle.audio.functional.get_window in PaddlePaddle 2.4.0-rc0 allows arbitrary code execution. Rated cr
In PaddlePaddle before 2.4, paddle.audio.functional.get_window is vulnerable to code injection because it calls eval on
The PaddlePaddle/Anakin repository through 0.1.1 on GitHub allows absolute path traversal because the Flask send_file fu
Arbitrary File Overwrite Via Path Traversal in paddlepaddle/paddle before 2.6. Rated critical severity (CVSS 9.1), this
Out-of-bounds read in gather_tree in PaddlePaddle before 2.4. Rated critical severity (CVSS 9.1), this vulnerability is
Command injection in paddle.utils.download._wget_download (bypass filter) in paddlepaddle/paddle 2.6.0. Rated high sever
Command injection in IrGraph.draw in paddlepaddle/paddle 2.6.0. Rated high severity (CVSS 7.8), this vulnerability is lo
Code Injection in paddlepaddle/paddle. Rated high severity (CVSS 7.8), this vulnerability is low attack complexity. Publ
EUVD-2026-98276
GHSA-cq2c-fqx9-6r6v
NVD
CVE.org
EPSS
VulDB
Exploit-DB