CVE-2026-32711
Received Received - Intake
Path Traversal in pydicom DICOMDIR Enables Arbitrary File Access

Publication date: 2026-03-20

Last updated on: 2026-03-23

Assigner: GitHub, Inc.

Description
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.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-20
Last Modified
2026-03-23
Generated
2026-06-16
AI Q&A
2026-03-20
EPSS Evaluated
2026-06-15
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
pydicom pydicom From 2.0.0 (inc) to 3.0.2 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-22 The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Attack-Flow Graph
AI Quick Actions
Instant insights powered by AI
Executive Summary

CVE-2026-32711 is a high-severity path traversal vulnerability in the pydicom Python library, which is used for working with DICOM files. The issue occurs when a maliciously crafted DICOMDIR file sets the ReferencedFileID attribute to a path outside the intended File-set root directory.

pydicom resolves the path to check if the file exists but does not verify that the resolved path remains within the File-set root. This lack of containment check allows attackers to perform arbitrary file operations such as reading, copying, moving, or deleting files outside the intended directory.

The vulnerability affects versions 2.0.0-rc.1 through 3.0.1 and was fixed in version 3.0.2 by adding strict path validation to ensure ReferencedFileID paths cannot escape the File-set root.

Impact Analysis

This vulnerability can allow an attacker to perform unauthorized file operations on your system if you use vulnerable versions of pydicom to process untrusted DICOMDIR or File-set inputs.

  • Arbitrary file read and copy outside the File-set root, potentially exposing sensitive files.
  • Arbitrary file move operations outside the File-set root, which could overwrite or relocate important files.
  • Arbitrary file deletion outside the File-set root, leading to loss of critical data.

These impacts can compromise confidentiality, integrity, and availability of your system files, leading to serious security risks.

Compliance Impact

I don't know

Detection Guidance

[{'type': 'paragraph', 'content': 'This vulnerability can be detected by inspecting DICOMDIR files for maliciously crafted ReferencedFileID attributes that point to paths outside the intended File-set root directory.'}, {'type': 'paragraph', 'content': 'A practical detection approach involves loading DICOMDIR files with pydicom versions prior to 3.0.2 and checking if any ReferencedFileID resolves to paths outside the File-set root.'}, {'type': 'paragraph', 'content': 'Since the vulnerability is related to path traversal in file operations, you can write a script or use Python commands to load the DICOMDIR and verify the resolved paths of ReferencedFileID entries.'}, {'type': 'list_item', 'content': "Use Python with pydicom (version 3.0.1 or earlier) to load the FileSet and inspect ReferencedFileID paths for traversal patterns such as '../' or absolute paths."}, {'type': 'list_item', 'content': "Example command snippet: \n```python\nfrom pydicom.fileset import FileSet\nfs = FileSet('path_to_DICOMDIR')\nfor record in fs.directory_record_sequence:\n file_id = record.ReferencedFileID\n # Check if file_id resolves outside fs.root_path\n```"}, {'type': 'paragraph', 'content': "Monitoring file operations triggered by pydicom's FileSet methods like copy(), write(), or remove() for unexpected file accesses outside the File-set root can also help detect exploitation attempts."}] [1]

Mitigation Strategies

The immediate and most effective mitigation is to upgrade pydicom to version 3.0.2 or later, where the vulnerability has been fixed by enforcing strict path validation on ReferencedFileID entries.

If upgrading is not immediately possible, avoid processing untrusted or unauthenticated DICOMDIR/File-set inputs with vulnerable pydicom versions, especially operations involving FileSet.copy(), write(), or remove().

Implement input validation or sandboxing to restrict file operations to trusted directories and monitor for suspicious file access patterns.

Chat Assistant
Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-32711. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70
EPSS Chart