CVE-2026-32711
High · 7.8CVSS
7.8
EPSS
0.2%
Published
Mar 20, 2026
CISA due date
—
Cloudanix analysis
A medical imaging file tool can be tricked into reading, copying, or deleting files outside the intended folder when someone opens a malicious imaging directory, putting patient records and other files at risk until the tool is updated.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Low
- Impact
- Data Tampering
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Low
- Patch risk
- Low
What it actually does
pydicom 2.0.0-rc.1 through 3.0.1 fails to confine DICOMDIR ReferencedFileID resolution to the File-set root. The library only checks that the resolved path exists and then uses that unchecked path in FileSet copy(), write(), and remove()+write(use_existing=True) I/O. A crafted ReferencedFileID can therefore cause arbitrary file read and copy, and in some flows move or delete, of files outside the intended File-set. Impact is local confidentiality, integrity, and availability of files the process can access (CVSS 7.8, AV:L/UI:R).
Why it matters to the business
Healthcare and imaging workflows that ingest untrusted DICOM File-sets with pydicom can expose or alter patient studies and unrelated host files, disrupting clinical operations and creating privacy or integrity incidents. The issue is not in KEV, has no reported ransomware use, exploit maturity is none, and EPSS is low and declining (0.0028 → 0.0022 over 30 days), so mass exploitation is unlikely; residual risk remains wherever untrusted DICOMDIR files are processed by unpatched pydicom. Upgrade urgency is driven by data sensitivity rather than active campaigns.
How an attack unfolds
An attacker supplies a DICOM File-set whose DICOMDIR sets ReferencedFileID to a path that, after resolution, lies outside the File-set root (for example via parent-directory components). A user or automated pipeline opens that File-set with vulnerable pydicom. The library confirms the target exists but does not verify it remains under the File-set root. Later public FileSet operations then read, copy, or in some cases move or delete that out-of-root path with the privileges of the pydicom process. No named threat actors or KEV activity are associated with this CVE.
How to fix it
Upgrade pydicom to 3.0.2 or later, which confines ReferencedFileID resolution to the File-set root. Pin and rebuild all applications, containers, and imaging pipelines that depend on pydicom. Until upgraded, do not process untrusted DICOMDIR/File-set input, run pydicom under a least-privilege account with a narrow working directory, and block inbound File-sets from untrusted sources. There is no complete configuration workaround in affected 2.0.0-rc.1–3.0.1 releases.
How to confirm the fix worked
Confirm installed pydicom is 3.0.2 or newer (package metadata, lockfiles, container images, and runtime imports). After upgrade, only trusted File-sets should be processed, and FileSet operations must refuse ReferencedFileID values that would resolve outside the File-set root. Hunt lockfiles and images for pydicom versions in 2.0.0-rc.1 through 3.0.1 and treat those deployments as exposed until rebuilt.
Typical attack path
- Craft or modify a DICOMDIR so ReferencedFileID resolves outside the File-set root.
- Deliver the File-set to a user or pipeline that uses pydicom 2.0.0-rc.1 through 3.0.1.
- Induce processing that calls FileSet copy(), write(), or remove()+write(use_existing=True).
- pydicom uses the unbounded resolved path for file I/O.
- Attacker-chosen files outside the File-set are read, copied, moved, or deleted under the host process identity.
How to detect it
There is no public exploit maturity and no named actor activity, so look for suspicious File-set handling rather than a known implant. Review application and audit logs around pydicom FileSet copy, write, and remove operations; inspect ingested DICOMDIR objects for ReferencedFileID values that contain parent-directory components or absolute paths outside the File-set root; and correlate with unexpected reads, copies, moves, or deletes of non-DICOM files by Python processes that import pydicom. Host telemetry of interest includes Python workers in imaging pipelines touching files outside approved study storage shortly after a DICOMDIR was opened. Absence of these artifacts does not prove non-exploitation if logging is incomplete.
- ReferencedFileID values containing ../
- ReferencedFileID values containing ..\
- DICOMDIR ReferencedFileID set to an absolute path outside the File-set root
- pydicom FileSet.copy/write/remove followed by I/O on paths outside the imaging File-set
- Python processes importing pydicom then unlink/rename of non-DICOM files after DICOMDIR parse
What your security team should do
- Inventory every runtime, image, and lockfile using pydicom 2.0.0-rc.1 through 3.0.1 and schedule upgrade to 3.0.2 or later.
- Stop ingesting untrusted DICOMDIR/File-set content until those runtimes are patched.
- Run remaining pydicom workloads with least privilege and filesystem allowlists limited to intended imaging storage.
- Review imaging and application logs for FileSet copy/write/remove activity against paths outside approved DICOM roots.
- Track this CVE as a patch-hygiene item rather than an active KEV/ransomware emergency, given low EPSS, no KEV listing, and no known exploit maturity.
The record
pydicom is a pure Python package for working with DICOM files. Versions 2.0.0-rc.1 through 3.0.1 are vulnerable to Path Traversal through a maliciously crafted DICOMDIR ReferencedFileID when it is set to a path outside the File-set root. pydicom resolves the path only to confirm that it exists, but does not verify that the resolved path remains under the File-set root. Subsequent public FileSet operations such as copy(), write(), and remove()+write(use_existing=True) use that unchecked path in file I/O operations. This allows arbitrary file read/copy and, in some flows, move/delete outside the File-set root. This issue has been fixed in version 3.0.2.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| openSUSE:Tumbleweed | python-pydicom | 0 | 3.0.2-1.1 |
Related vulnerabilities
- CVE-2026-81163 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')… CWE-22
- CVE-2026-112049 Vita3K before build 4187 contains a path traversal (zip slip) vulnerability in… CWE-22
- CVE-2026-112005 WhoDB 0.104.0 before 0.135.0 contains a path traversal vulnerability that allows remote… CWE-22
- CVE-2026-61702 OpenPrinting CUPS is an open source printing system for Linux and other Unix-like… CWE-22
- CVE-2026-104871 The Angular SSR is a server-rise rendering tool for Angular applications. CWE-22
- CVE-2026-102991 Mako is a template library written in Python. CWE-22
- CVE-2026-101894 The decompress package for Node.js extracts archives. CWE-22
- CVE-2026-100689 GitPython before 3.1.62 does not validate the `path` field read from an untrusted… CWE-22