Hugging Face smolagents CVE-2025-14931
CRITICALAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed smolagents remote executor
-
DeliverySubmit crafted pickle payload
-
ExploitTrigger unsafe deserialization (CWE-502)
-
ExecutionExecute arbitrary code as service account
-
ImpactFull compromise of host context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
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 target deploys and exposes Hugging Face smolagents' remote Python executor such that attacker-controlled data reaches the pickle parsing/deserialization path; the specific flaw is unsafe deserialization of untrusted pickle data (CWE-502) with no validation of user-supplied input. Per the CVSS vector (AV:N/AC:L/PR:N/UI:N) no authentication or user interaction is needed once that path is reachable, so the primary limiting factor is network reachability of the vulnerable executor endpoint and whether the deployment feeds untrusted/externally-sourced data into deserialization - deployments that do not expose the remote executor to untrusted input are not exploitable. Impact is bounded by the privileges of the service account running smolagents. |
| Impact | All severity signals point to maximum technical severity: the CVSS 3.0 base score is 10.0 with AV:N/AC:L/PR:N/UI:N and full C:H/I:H/A:H plus a scope change (S:C), meaning an unauthenticated, remote, low-complexity attacker can achieve arbitrary code execution - consistent with the CWE-502 (deserialization of untrusted data / pickle) root cause described. However, the exploitation-likelihood signals are far more muted and partially conflicting with the 'critical' headline: EPSS is only 1.09% (65th percentile), there is no CISA KEV listing, and no public POC is referenced in the provided data, so this is best characterized as a high-impact but not-yet-widely-exploited issue. The vulnerability was reported through Trend Micro's Zero Day Initiative (ZDI-25-1143 / ZDI-CAN-28312), which indicates a coordinated-disclosure research finding rather than observed in-the-wild abuse. The practical risk is therefore highly deployment-dependent: because pickle-based RCE is trivially weaponizable once input reaches the vulnerable deserialization path, the gating factor is exposure of the smolagents remote Python executor to untrusted input, not attack difficulty. Note the signal tension explicitly: CVSS indicates trivial network exploitation while EPSS/KEV indicate no confirmed mass exploitation, suggesting the real-world risk is concentrated in environments that actually expose smolagents' remote executor to untrusted data rather than being broadly opportunistic. |
| Exploit ScenarioDerived | An attacker who can reach a smolagents deployment that uses the remote Python executor submits a crafted pickle payload to the deserialization path; because the data is not validated, unpickling instantiates attacker-controlled objects that execute arbitrary code in the context of the service account. No authentication or user interaction is required (PR:N/UI:N), and the low attack complexity (AC:L) means a single crafted request suffices. No public exploit code is identified at time of analysis, but pickle-deserialization flaws are trivially weaponizable. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Unsafe pickle deserialization in Hugging Face smolagents' remote Python executor allows remote, unauthenticated attackers to execute arbitrary code in the context of the service account running the library (CVSS 10.0 with scope change). Exploitation is conditional: the deployment must expose the remote Python executor such that attacker-controlled data reaches the pickle parsing path, but once that path is reachable the CVSS vector (AV:N/AC:L/PR:N/UI:N) indicates no credentials or user interaction are needed. No public exploit code identified at time of analysis and EPSS is modest at 1.09% (65th percentile), so the practical risk is driven almost entirely by whether an organization has exposed the executor to untrusted input.
RemediationAI
No vendor-released patch identified at time of analysis - the feed carries no fix version and no patch reference beyond the ZDI advisory (https://www.zerodayinitiative.com/advisories/ZDI-25-1143/), which should be monitored for the vendor's fixed release; upgrade to the first patched smolagents version as soon as it is published. Until then, apply compensating controls targeted at the deserialization path: remove the remote Python executor from any network-reachable position and bind it to loopback or a private interface behind mTLS-authenticated, allow-listed clients (trade-off: breaks distributed/multi-host agent deployments); replace or wrap pickle with a safe serialization format such as JSON or a restricted unpickler with an explicit class allow-list (trade-off: incompatible payloads and possible refactoring of custom executor subclasses); and run the executor in a disposable, least-privilege container with no host mounts, no cloud metadata access, and restricted egress so that code execution cannot pivot beyond the process (trade-off: reduced functionality for agents that legitimately need filesystem or network access, plus operational overhead). Do not feed externally sourced or third-party data into the executor's deserialization path, and log/alert on anomalous pickle payloads reaching the endpoint.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-502, deserialization of untrusted data, in the smolagents remote Python executor - the component that lets LLM-driven agents dispatch Python code to a separate execution process. That client/server channel relies on Python pickle for serialization, and pickle is inherently unsafe against hostile input: an attacker who controls the serialized blob can embed a __reduce__ payload that invokes arbitrary callables (os.system, subprocess, etc.) the moment pickle.loads() runs, before any validation of the 'code' being executed. The flaw is that user-supplied data is parsed as pickle without validation, signature checking, or a restricted unpickler. The assessed vector includes S:C (scope change), reflecting that code execution escapes the intended agent-sandbox boundary and lands in the hosting service account - which is why impact is scored C:H/I:H/A:H rather than being contained to the agent runtime. No CPE strings were supplied in the intelligence feed, so affected builds cannot be enumerated from CPE data; the only vendor-side artifact is the ZDI advisory ZDI-25-1143 / ZDI-CAN-28312.
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:N/S:C/C:H/I:H/A:H
Unauthenticated remote pickle RCE gives AV:N/AC:L/PR:N/UI:N with full C/I/A:H; S:C reflects the remote-executor escape running code in the broader service-account context.
Primary rating from Vendor (trendmicro).
CVSS VectorVendor: trendmicro
DescriptionCVE.org
Hugging Face smolagents Remote Python Executor Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of Hugging Face smolagents. Authentication is not required to exploit this vulnerability.
The specific flaw exists within the parsing of pickle data. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of the service account. Was ZDI-CAN-28312.
Executive ViewAI
Hugging Face smolagents' remote Python executor contains a critical unsafe pickle deserialization flaw (CVE-2025-14931) that can allow unauthenticated remote code execution under the service account when the executor is reachable by attacker-controlled input. The business exposure is concentrated in teams that expose this component to untrusted networks or data sources; those deployments could suffer host compromise, data exposure, and operational disruption, while no public exploit identified at time of analysis means priority should be exposure reduction. Leadership should care because the vulnerability is conditional on deployment architecture but potentially severe where the executor is exposed.
No vendor-released patch identified at time of analysis; disable or isolate the Hugging Face smolagents remote Python executor, restrict network reachability to trusted sources only, require authentication and authorization at a controlling gateway, run the service under a least-privilege account with sandboxing and egress filtering, and monitor for anomalous process or outbound activity.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
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
NVD
CVE.org
EPSS
GitHub PoC
Exploit-DB