CVE-2023-32135
Executive Summary
CVE-2023-32135 is a use-after-free vulnerability in Sante DICOM Viewer Pro, a medical imaging application used for viewing DICOM files. The flaw resides in the parsing of DCM files, where the application fails to validate the existence of an object before performing operations on it. This allows a remote attacker to disclose sensitive information by tricking a user into opening a malicious DCM file or visiting a malicious page. While the CVSS score is low (3.3), the vulnerability can be chained with other exploits to achieve arbitrary code execution in the context of the current process. No public proof-of-concept or patch is currently available.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
CVSS Breakdown & Threat Level
- CVSS Score: 3.3 (Low)
- Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N
- Attack Vector: Local (requires user interaction)
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Unchanged
- Confidentiality Impact: Low
- Integrity Impact: None
- Availability Impact: None
Threat Level: Low. The vulnerability primarily enables information disclosure and requires user interaction. However, chaining with other vulnerabilities could elevate the risk to arbitrary code execution.
Deep Dive & Mechanics
The vulnerability is a classic use-after-free (CWE-416) in the DCM file parsing routine of Sante DICOM Viewer Pro. When the application processes a specially crafted DCM file, it may free a memory object but retain a pointer to it. Subsequent operations on that pointer access freed memory, leading to potential information disclosure or, when combined with other bugs, code execution.
Root Cause: Lack of validation of object existence before performing operations. The parser does not check if a referenced object has been deallocated, allowing an attacker to control the freed memory and leak sensitive data.
Attack Vector: Remote, but requires user interaction. An attacker hosts a malicious DCM file or webpage; the victim must open it in Sante DICOM Viewer Pro.
Impact: Information disclosure (memory contents). In a chained attack, arbitrary code execution in the context of the current process is possible.
Vulnerable vs. Patched Code
No patched version is available. The vulnerable code likely resembles:
// Vulnerable pseudo-code
void parse_dcm_tag(DCM_Object *obj) {
// obj is freed elsewhere but pointer remains
process_tag(obj->data); // Use-after-free
}
A patched version would validate the object before use:
// Patched pseudo-code
void parse_dcm_tag(DCM_Object *obj) {
if (obj == NULL || obj->is_freed) return; // Check before use
process_tag(obj->data);
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- Sante DICOM Viewer Pro installed on target.
- Ability to deliver a malicious DCM file (e.g., via email, web download).
Steps:
- Craft a DCM file that triggers the use-after-free. This requires reverse engineering the parser to identify the exact tag sequence that causes the free.
- Embed shellcode or ROP chain in the DCM file to leverage the freed memory for code execution.
- Deliver the file to the victim and convince them to open it.
Example (conceptual):
# Craft a malicious DCM file (simplified)
import struct
def create_malicious_dcm():
# Trigger use-after-free via specific tag
header = b"DICM"
# ... craft tags that cause free and then access
payload = b"\x00" * 100 # Placeholder for exploit
return header + payload
with open("malicious.dcm", "wb") as f:
f.write(create_malicious_dcm())
Blue Team
Detection:
- Monitor for unusual DCM files being opened, especially from untrusted sources.
- Use endpoint detection rules to flag Sante DICOM Viewer Pro crashes or memory access violations.
- Implement application whitelisting to restrict execution of DICOM viewers.
Hunting:
- Search for DCM files with anomalous tag structures or sizes.
- Analyze memory dumps for signs of heap spraying or ROP chains.
Indicators of Compromise (IOCs)
- File Hashes: (None publicly known; generate upon discovery)
- Network: Connections to known malicious domains hosting DCM files.
- Process: Sante DICOM Viewer Pro (e.g.,
DicomViewerPro.exe) crashing or exhibiting abnormal memory access. - Registry: (None specific)
- YARA Rule: (See Detection Engineering)
Detection Engineering
YARA Rule
rule CVE_2023_32135_Sante_DICOM_UAF {
meta:
description = "Detects malicious DCM files exploiting CVE-2023-32135"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2023-32135"
strings:
$dcm_header = "DICM"
$suspicious_tag = { (08|28|48|68) 00 10 00 } // Example tag pattern
condition:
$dcm_header at 128 and #suspicious_tag > 5
}
Sigma Rule
title: Sante DICOM Viewer Pro Use-After-Free Exploitation Attempt
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b1d3f4a5c6d
status: experimental
description: Detects potential exploitation of CVE-2023-32135 via DCM file opening
author: Valters IT
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\DicomViewerPro.exe'
CommandLine|contains: '.dcm'
condition: selection
falsepositives:
- Legitimate DICOM file viewing
level: medium
Suricata Rule
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2023-32135 Sante DICOM Viewer Pro UAF Attempt"; flow:to_server,established; content:"DICM"; offset:128; depth:4; content:"|08 00 10 00|"; distance:0; within:4; classtype:attempted-user; sid:1000001; rev:1;)
Remediation & Mitigation
- No patch available. Contact Sante for updates.
- Mitigation: Do not open DCM files from untrusted sources. Use application sandboxing or virtualization for DICOM viewing.
- Workaround: Disable DICOM file association or use an alternative viewer.
- Monitor: Apply YARA/Sigma rules to detect malicious files.
Valters IT
Securing Digital Frontiers
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.