CVE-2025-11275CVE-2025-11275是Open Asset Import Library(Assimp)6.0.2版本中存在的一个堆缓冲区溢出漏洞。该漏洞位于Assimp所集成的OpenDDL解析器模块中,具体涉及ODDLParser::getNextSeparator函数,该函数定义于assimp/contrib/openddlparser/include/openddlparser/OpenDDLParserUtils.h文件中。Assimp是一个广泛使用的开源3D模型导入库,支持多种3D文件格式(如OBJ、FBX、GLTF、Collada等),被大量游戏引擎、3D建模工具和图形应用程序所采用。
该漏洞的根本原因在于OpenDDL解析器在处理特定格式的OpenDDL文件时,getNextSeparator函数未能对输入数据进行有效的边界检查,导致在解析过程中发生堆缓冲区溢出。攻击者可以通过精心构造恶意的OpenDDL格式文件,触发该漏洞并实现对受影响应用程序的控制。由于Assimp通常作为第三方库被集成到各种应用程序中,该漏洞的影响范围可能波及所有使用Assimp 6.0.2版本处理用户提供的3D模型文件的应用程序。
根据CVSS 3.1评分体系,该漏洞获得5.3分(MEDIUM级别)。攻击向量为本地(AV:L),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N)。成功利用该漏洞可导致机密性、完整性和可用性均受到低程度影响。值得注意的是,该漏洞的PoC(概念验证代码)已经在GitHub上公开发布,任何潜在的攻击者都可以获取并利用,增加了该漏洞被实际利用的风险。
该漏洞的技术原理在于Assimp 6.0.2中集成的OpenDDL解析器(OpenDDLParser)在解析OpenDDL格式文件时,ODDLParser::getNextSeparator函数存在缓冲区边界检查缺陷。当解析器遍历输入文件内容以查找分隔符时,如果遇到特制的超长标识符或畸形的数据结构,函数会向预分配的堆缓冲区写入超出其容量的数据,从而触发堆缓冲区溢出。
具体而言,getNextSeparator函数负责在OpenDDL文本流中定位下一个语法分隔符(如换行符、括号等)。在正常情况下,该函数应当对缓冲区大小进行限制,但由于缺少适当的长度验证逻辑,恶意构造的输入可以导致函数持续写入数据直至超出堆缓冲区边界。攻击者可以通过提供一个精心制作的OpenDDL格式文件(例如包含超长标识符或嵌套结构),在受害应用程序打开或导入该文件时触发溢出。
利用方式方面,攻击者首先需要制作一个恶意的3D模型文件(OpenDDL格式),然后通过社会工程学或其他手段诱导受害者使用集成了Assimp 6.0.2的应用程序打开该文件。一旦文件被解析,堆缓冲区溢出将被触发,攻击者可能实现任意代码执行、进程崩溃或内存信息泄露等攻击效果。由于该漏洞为本地攻击,攻击者需要能够将恶意文件投递到目标系统上。