CVE-2026-36189Uncrustify项目在版本Uncrustify_d-0.82.0-132-bcc41cbdc中发现缓冲区溢出漏洞。该漏洞源于check_template.cpp文件中的check_template函数和tokenize_cleanup函数未正确处理输入数据。本地攻击者无需认证即可利用此漏洞,通过构造恶意输入触发缓冲区溢出,导致目标程序崩溃或服务不可用(拒绝服务)。该问题已在后续提交中得到修复。
该漏洞属于典型的内存破坏类漏洞,具体发生在Uncrustify代码格式化工具的解析逻辑中。在受影响版本中,`check_template.cpp`文件的`check_template`函数被`tokenize_cleanup`函数调用时,未能对输入数据的长度进行严格验证。当处理包含特定格式或超长字符串的源代码文件时,程序会尝试向固定大小的缓冲区写入超出其容量的数据。利用方式方面,由于攻击向量为本地(AV:L)且无需用户交互,攻击者只需在本地系统上拥有运行uncrustify可执行文件的能力,并准备一个特制的源代码文件作为输入。当Uncrustify尝试格式化该恶意文件时,越界写入操作将覆盖相邻的内存区域,导致程序异常终止。