CVE-2026-0819wolfSSL的PKCS7 SignedData编码功能中存在栈缓冲区溢出漏洞。在`wc_PKCS7_BuildSignedAttributes`函数中,代码错误地将已用容量值而非剩余可用空间传递给`EncodeAttributes`。当应用允许不受信任输入控制签名属性大小时,会导致越界写入,引发栈或堆内存损坏。
该漏洞源于wolfSSL源码中`wc_PKCS7_BuildSignedAttributes()`函数的逻辑错误。该函数内部使用固定大小的数组`signedAttribs[7]`来存储签名属性。在调用`EncodeAttributes()`时,代码错误地传入了`esd->signedAttribsCount`(当前已用数量)作为容量参数,而非数组剩余空间(即`7 - count`)。当应用程序调用`wc_PKCS7_EncodeSignedData()`时,若允许攻击者通过不受信任输入控制`pkcs7->signedAttribsSz`并使其超过剩余空间,`EncodeAttributes()`将向数组边界之外写入数据,导致栈缓冲区溢出。在`WOLFSSL_SMALL_STACK`构建配置下,由于栈空间受限,相关数据分配在堆上,因此表现为堆损坏。