Skip to main content

pynetdicom CVE-2026-56445

| EUVDEUVD-2026-39562 HIGH
Path Traversal (CWE-22)
2026-06-25 icscert GHSA-f3pc-ww42-cwqp
8.8
CVSS 4.0 · Vendor: icscert
Share

Severity by source

Vendor (icscert) PRIMARY
8.8 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vuln.today AI
9.1 CRITICAL

Remote unauthenticated C-STORE to a listening SCP gives AV:N/AC:L/PR:N/UI:N; arbitrary file write yields I:H and A:H with no direct disclosure (C:N).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (icscert).

CVSS VectorVendor: icscert

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
X

Lifecycle Timeline

1
Analysis Generated
Jun 25, 2026 - 21:16 vuln.today

DescriptionCVE.org

The qrscp application's C-STORE handler uses a specific instance from attacker-supplied DICOM datasets directly in os.path.join() without sanitization, allowing file writes to arbitrary paths.

AnalysisAI

Arbitrary file write in the pynetdicom library's qrscp storage SCP application allows a remote, unauthenticated attacker to plant files at attacker-chosen paths on the receiving host. The qrscp C-STORE handler trusts a value taken from an incoming DICOM dataset and passes it into os.path.join() without sanitization, so a crafted instance identifier containing path-traversal sequences escapes the intended storage directory. No public exploit has been identified at time of analysis, but the CVSS 4.0 base score of 8.8 and unauthenticated network reachability make this a high-priority issue for any exposed DICOM endpoint.

Technical ContextAI

pynetdicom is a pure-Python implementation of the DICOM upper-layer networking protocol, widely used to build DICOM Storage SCP/SCU services and PACS-adjacent tooling in medical imaging. Its bundled qrscp Query/Retrieve application acts as a Storage SCP: when it receives a C-STORE request, it persists the incoming SOP Instance to disk using a filename derived from the dataset. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / Path Traversal): a specific attacker-controlled instance attribute (e.g. the SOP Instance UID) is concatenated into a destination path via os.path.join() with no validation. Because os.path.join() resolves an absolute or '../'-laden second argument relative to (or in place of) the base directory, the attacker controls where the file lands. The affected component per CPE is cpe:2.3:a:pydicom:pynetdicom_library, reported by ICS-CERT under advisory ICSMA-26-176-01, reflecting its use in medical/OT environments.

RemediationAI

Upstream fix status is not independently confirmed from the provided data - no exact patched version is given in the references - so monitor the pydicom/pynetdicom repository (https://github.com/pydicom/pynetdicom) and the CISA advisory ICSMA-26-176-01 (https://www.cisa.gov/news-events/ics-medical-advisories/icsma-26-176-01) for the official fixed release and upgrade to it once published. As compensating controls until then: restrict which Application Entity titles and source IPs may connect to the qrscp SCP via network ACLs and DICOM AE allow-listing so only trusted modalities can issue C-STORE (trade-off: must maintain the modality inventory); place the storage service on a segmented imaging VLAN with no direct internet exposure; and if you maintain the deployment, run qrscp under a low-privilege account with a dedicated, restricted storage directory and a restrictive umask so an escaped write cannot reach sensitive system paths (trade-off: does not stop the traversal, only limits blast radius). If feasible, validate or hash incoming SOP Instance UIDs before using them as filenames rather than passing raw dataset values to os.path.join().

Share

CVE-2026-56445 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy