CVE-2026-29628CVE-2026-29628 是 tinyobjloader 项目实验性组件中发现的安全漏洞。该漏洞位于 `tinyobj_loader_opt.h` 文件中(提交版本 d56555b),由于软件在解析材质文件时未正确验证输入长度,导致存在栈缓冲区溢出。攻击者可以通过诱导应用程序加载特制的 .mtl 文件来触发此漏洞。成功利用可能导致应用程序崩溃或拒绝服务,从而影响系统可用性。该漏洞 CVSS 评分为 6.2,属于中危级别,攻击无需用户交互且无需认证,但攻击范围限制在本地。
该漏洞的根源在于 tinyobjloader 的实验性优化加载器在处理 .mtl 文件数据时,缺乏必要的边界检查。具体而言,当解析器读取材质定义并尝试将数据复制到栈上的固定大小缓冲区时,如果输入数据长度超过了缓冲区的预留空间,就会发生栈溢出。攻击者可以构建一个包含超长字符串或特定格式异常的 .mtl 文件。当目标系统上的应用程序(如使用了该库的 3D 建模软件或游戏引擎)解析此文件时, excess 数据将覆盖栈上的返回地址或其它关键控制结构。虽然该漏洞的当前主要影响被评估为拒绝服务(DoS),导致程序崩溃,但在特定的内存布局下,栈溢出理论上也可能被进一步利用以执行任意代码。由于攻击向量为本地(AV:L),攻击者通常需要以某种方式将恶意文件传递到目标系统并触发加载。