CVE-2026-39853osslsigncode是一个用于Authenticode签名和时间戳的工具。在2.12版本之前,该工具在多个签名验证路径中存在栈缓冲区溢出漏洞。在验证PKCS#7签名时,代码将解析后的SpcIndirectDataContent结构中的摘要值复制到固定大小的栈缓冲区中,且未验证源长度是否适合目标缓冲区。该漏洞存在于PE、MSI、CAB和脚本文件的验证处理程序中,攻击者可利用此漏洞破坏堆栈状态。
该漏洞的根本原因在于osslsigncode在处理SpcIndirectDataContent结构时缺乏边界检查。具体而言,当程序调用`osslsigncode verify`验证PE、MSI、CAB或脚本文件时,会执行`memcpy`操作,试图将攻击者控制的摘要数据复制到栈上分配的固定大小缓冲区`mdbuf[EVP_MAX_MD_SIZE]`(64字节)中。由于未校验输入数据的长度,攻击者可以构造包含超大摘要字段的恶意签名文件。当用户验证该文件时,无限制的数据复制将导致栈缓冲区溢出,进而覆盖相邻的栈变量、返回地址或其他关键控制数据,最终可能导致任意代码执行或程序崩溃。