CVE-2026-22796CVE-2026-22796是OpenSSL中的一个类型混淆漏洞,位于PKCS#7签名验证功能中。该漏洞由[email protected]发现并报告。漏洞源于函数PKCS7_digest_from_attributes()在访问消息摘要属性值时未正确验证其ASN1_TYPE类型,当类型不是V_ASN1_OCTET_STRING时,会导致通过ASN1_TYPE联合体访问无效内存,从而引发程序崩溃或拒绝服务。攻击者可利用此漏洞,通过向目标应用程序提供格式错误的签名PKCS#7数据,触发空指针或无效指针解引用,最终导致应用程序崩溃。由于PKCS7 API是遗留API,OpenSSL官方建议应用程序使用CMS API替代。该漏洞影响范围涵盖OpenSSL多个主要版本,CVSS评分5.3,属于中等严重程度。
该漏洞的根本原因在于OpenSSL的PKCS7_digest_from_attributes()函数在处理PKCS#7签名数据时,存在类型验证不足的问题。具体来说,当解析签名消息摘要属性时,函数直接访问ASN1_TYPE联合体的成员,但未首先验证该成员的实际类型是否为V_ASN1_OCTET_STRING。攻击者可以构造一个恶意PKCS#7数据,其中消息摘要属性使用不同的ASN1类型(如V_ASN1_SEQUENCE或其他类型),当函数尝试将其作为OCTET_STRING处理时,会导致内存访问错误。这可能表现为空指针解引用、无效内存访问或断言失败,最终导致应用程序崩溃。需要注意的是,该漏洞的利用仅限于拒绝服务攻击,不涉及数据泄露或代码执行。FIPS模块不受此漏洞影响,因为其PKCS#7解析实现位于FIPS模块边界之外。