IPBUF安全漏洞报告
English
CVE-2026-28390 CVSS 7.5 高危

CVE-2026-28390 OpenSSL CMS空指针拒绝服务漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-28390
漏洞类型
拒绝服务
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
OpenSSL

相关标签

CVE-2026-28390OpenSSL拒绝服务空指针引用CMSRSA-OAEPDoS

漏洞概述

OpenSSL在处理特制的CMS EnvelopedData消息时存在空指针引用漏洞。当使用KeyTransportRecipientInfo并采用RSA-OAEP加密时,代码在检查RSA-OAEP SourceFunc算法标识符的可选参数字段前,未验证该字段是否存在。若该字段缺失,将导致空指针解引用。攻击者可利用此漏洞,通过发送恶意CMS数据,诱使调用CMS_decrypt()的应用程序在身份验证或加密操作前崩溃,从而造成拒绝服务。值得注意的是,OpenSSL的FIPS模块不受此问题影响,因为受影响的代码位于FIPS模块边界之外。

技术细节

该漏洞的技术根源在于OpenSSL解析CMS(Cryptographic Message Syntax)数据时的边界检查缺失。具体流程涉及处理EnvelopedData结构中的KeyTransportRecipientInfo部分。当接收方使用RSA-OAEP算法进行密钥传输时,OpenSSL需要解析算法标识符中的SourceFunc参数。漏洞代码在访问该可选参数的指针时,假设其必然存在,忽略了ASN.1结构中该字段可为NULL或缺失的情况。当攻击者构造一个缺失该参数字段的恶意CMS消息时,OpenSSL在执行CMS_decrypt()函数时会发生空指针解引用,引发段错误(Segmentation Fault)。由于该崩溃发生在加密操作和认证之前,攻击者无需具备任何权限或用户交互即可远程触发漏洞,导致处理邮件(S/MIME)或其他CMS协议的服务进程意外终止。

攻击链分析

STEP 1
侦察阶段
攻击者识别出目标应用程序处理CMS数据(如S/MIME邮件网关)或使用OpenSSL的CMS_decrypt()接口。
STEP 2
武器化
攻击者构造特制的CMS EnvelopedData消息,其中包含使用RSA-OAEP的KeyTransportRecipientInfo,但故意省略SourceFunc算法标识符中的可选参数字段。
STEP 3
交付
攻击者将恶意构造的CMS消息发送给目标应用程序。这可以通过电子邮件、网络请求或文件上传等方式进行。
STEP 4
利用
目标应用程序接收数据并调用OpenSSL的CMS_decrypt()函数进行处理。由于存在空指针解引用漏洞,程序在解析过程中发生崩溃。
STEP 5
影响
应用程序进程终止,导致服务不可用(拒绝服务),且崩溃发生在认证之前,攻击者无需任何凭证即可达成攻击目的。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os from asn1crypto import cms, core, algos # Generate a malformed CMS EnvelopedData message # This script creates a CMS structure where RSA-OAEP parameters are missing def create_exploit_cms(): # Construct basic CMS EnvelopedData # Note: Real exploitation requires precise ASN.1 crafting # This is a conceptual PoC demonstrating the missing parameter structure. # Create RecipientInfo using KeyTransportRecipientInfo # Algorithm: RSA-OAEP # Missing the 'parameters' field in the algorithm identifier # Simplified demonstration of the malformed data structure # In a real scenario, one would serialize this to DER and send to OpenSSL malformed_algorithm = algos.EncryptionAlgorithm( {'algorithm': 'rsaes_oaep', 'parameters': None} ) # ... (Rest of CMS construction logic would go here) with open('exploit_cms.der', 'wb') as f: # Write dummy data for demonstration # Actual exploit requires valid ASN.1 structure with the specific missing field f.write(b'MALFORMED_CMS_DATA') print("[+] Generated malformed CMS message: exploit_cms.der") print("[+] Triggering OpenSSL decryption...") # Trigger the vulnerability # os.system("openssl cms -decrypt -in exploit_cms.der -inform DER -inkey private.pem") if __name__ == "__main__": create_exploit_cms()

影响范围

OpenSSL (Main branches affected, specific versions refer to vendor advisory)
OpenSSL FIPS Module 3.0, 3.3, 3.4, 3.5, 3.6 (Not affected)

防御指南

临时缓解措施
建议立即更新OpenSSL库以修复此空指针解引用漏洞。对于无法立即更新的系统,应严格限制处理不可信来源的CMS数据,或在隔离环境中进行解析,以防止主服务崩溃。由于FIPS模块不受影响,运行在FIPS模式下的环境风险较低。

参考链接

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