Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconGain local account on shared system
-
DeliveryIdentify writable shared HuggingFace cache directory
-
ExploitPredict extraction output path from dataset name/version
-
InstallPre-plant symlink at output path targeting sensitive file
-
C2Wait for privileged process to trigger Extractor.extract()
-
ExecuteLibrary follows symlink without check
-
ImpactSensitive file overwritten enabling privilege escalation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling UNIX symlink resolution
|
| Exploitation Conditions | Exploitation requires the attacker to hold a local system account with write access to the HuggingFace Datasets cache directory used by the target process - not merely read access. The critical enabling condition is a shared-cache topology: the same cache directory must be writable by the attacker and subsequently read/written by a higher-privileged user or automated service that triggers Extractor.extract(). This is common in HPC clusters, shared ML platforms, and CI/CD runners with shared NFS or volume mounts, but not present in single-user workstations or containers with per-user ephemeral cache paths. The attacker must also be able to predict the extraction output path before the extraction runs to successfully pre-plant the symlink; predictable or enumerable path naming (dataset name plus version hash) satisfies this. Passive user interaction (CVSS 4.0 UI:P) is required - a legitimate extraction job must be triggered by the victim process. Exploitation is blocked by per-user cache directory permissions (mode 700), isolated container filesystems, and the patched symlink-unlink guard in commit ad2d853. |
| Impact | The CVSS 4.0 score of 4.4 with vector AV:L/AC:L/AT:P/PR:L/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N reflects the primary risk moderators: local filesystem access is required, specific attack preconditions must be met (AT:P - shared-cache topology and predictable extraction output paths), and passive user interaction is needed (a legitimate extraction must be triggered). The high integrity and availability impacts on the vulnerable system are accurate given that arbitrary file overwrite is achievable. The publicly available POC meaningfully raises practical risk beyond what the moderate base score implies, particularly in multi-user ML infrastructure. No CISA KEV listing exists for this CVE and EPSS data was not provided, so exploitation breadth cannot be quantified. Real-world risk is concentrated in shared HPC clusters, containerized training pipelines with shared volume mounts, and automated data-processing services running as privileged users - in those contexts, this should be treated as higher priority than the 4.4 score suggests. In single-user workstations or properly isolated containers, risk is negligible. No conflicting data signals were identified; the CVSS vector is consistent with the described local symlink attack. |
| Exploit ScenarioDerived | A low-privileged attacker on a shared ML training cluster identifies that a privileged data-ingestion service periodically calls Extractor.extract() using a cache directory writable by all cluster users. The attacker pre-plants a symlink at the predictable extraction output path pointing to /etc/cron.d/rootjob, then waits for the service to trigger its next scheduled dataset pull. When Extractor.extract() runs without the symlink check, archive contents are written through the symlink to the cron directory, injecting a root-level cron job. A public exploit demonstrating this path-redirection technique is available at https://github.com/huggingface/datasets/issues/8296. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 23, 2026
Symlink following in HuggingFace Datasets through version 5.00 allows local low-privileged attackers to redirect archive extraction to arbitrary filesystem locations by pre-planting symlinks at predictable output paths in the shared cache directory. When a higher-privileged user or automated service subsequently triggers Extractor.extract(), the library writes archive contents through the attacker-controlled symlink, enabling overwrite of sensitive system files and potential privilege escalation or code execution. A publicly available exploit exists and an upstream fix is available via commit ad2d853, though no confirmed tagged release version has been independently verified.
RemediationAI
The upstream fix is available via commit ad2d853ae2ce41d8068c23b44c2e29004312ccee (https://github.com/huggingface/datasets/commit/ad2d853ae2ce41d8068c23b44c2e29004312ccee), merged through pull request #8303 (https://github.com/huggingface/datasets/pull/8303). Upgrade to a release of the datasets package that includes this commit; verify by checking that the installed version's extract.py contains the os.path.islink() guard before writing output paths. No specific tagged release version has been independently confirmed, so review the package changelog or pin to a commit at or after ad2d853. As a compensating control pending upgrade, restrict write permissions on the HuggingFace cache directory so only the owning user can write (chmod 700 ~/.cache/huggingface/datasets) - this prevents co-resident attackers from pre-planting symlinks, but breaks collaborative cache sharing in multi-user setups. In containerized environments, avoid mounting shared writable volumes to cache directories accessible by processes running at different privilege levels; use per-user or per-job ephemeral cache paths instead.
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
The vulnerability resides in the Extractor.extract() method within src/datasets/utils/extract.py of the HuggingFace Datasets Python library (CPE: cpe:2.3:a:huggingface:datasets:*:*:*:*:*:*:*:*), affecting all releases through 5.00. CWE-61 (UNIX Symbolic Link Following) describes the root cause: the extractor writes decompressed archive contents to output paths without first verifying whether those paths resolve through attacker-controlled symlinks. The shared HuggingFace cache directory (~/.cache/huggingface/datasets) is frequently mounted on shared filesystems in HPC clusters, multi-user ML training environments, and CI/CD pipelines, giving co-resident unprivileged users write access to cache paths that privileged processes also consume. The fix in commit ad2d853 adds two lines to the extraction logic: if the output path is a symlink (os.path.islink(output_path)), it is unlinked before writing proceeds, neutralizing the redirection.
Know when Datasets 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:L/AC:L/AT:P/PR:L/UI:P/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N
Local access and pre-planted symlink setup require AC:H; low-privilege local account needed (PR:L); victim must trigger extraction (UI:R); no confidentiality impact; scope unchanged per CVSS 4.0 SC/SI/SA:N signals.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Datasets through 5.00, fixed in commit ad2d853, contains a symlink-following vulnerability in Extractor.extract() that allows local attackers to write arbitrary files by pre-planting symlinks at predictable output paths. Attackers can redirect archive extraction to arbitrary filesystem locations in shared-cache environments, enabling overwrite of sensitive files and potential privilege escalation or code execution.
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
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Deserialization of attacker-supplied pickle data in the deprecated pandas packaged builder of Hugging Face Datasets (all
Path traversal in Hugging Face Datasets up to 5.0.0 allows attackers to read arbitrary local files when a victim process
EUVD-2026-48361
GHSA-5cm7-hhj8-4m75
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB