Dell BSAFE Crypto-C _A_DecodeElement整数下溢漏洞分析

本文详细分析了Dell BSAFE Crypto-C库中_A_DecodeElement函数存在的整数下溢漏洞,该漏洞可导致越界读取,攻击者可能利用泄露的内存绕过ASLR并与其他漏洞结合执行任意代码。

TALOS-2025-2141 || Cisco Talos情报组 - 全面威胁情报

漏洞概述

CVE编号: CVE-2019-3728

摘要: Dell BSAFE Crypto-C库的_A_DecodeElement功能中存在整数下溢漏洞。特制的ASN.1记录可导致越界读取。攻击者可通过提供格式错误的ASN.1记录来触发此漏洞。

确认受影响的版本

以下版本经过Talos测试或验证,或由供应商确认为受影响版本:

  • Dell BSAFE Crypto-C RSA 6.4

产品链接: BSAFE Crypto-C - https://www.dell.com/support/product-details/en-us/product/bsafe-crypto-c-micro-edition/docs

CVSSv3评分

7.5 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

CWE分类

CWE-191 - 整数下溢(回绕)

技术细节

Dell BSAFE Crypto-C是一个为应用程序开发人员提供加密功能和服务的软件库。它是BSAFE安全产品套件的一部分,旨在提供强大的加密和数据保护功能。Crypto-C支持广泛的加密算法,包括对称和非对称加密、哈希和数字签名,确保安全的数据处理和通信。

在读取扩展标签时,_A_DecodeElement使用表达式contents.len = maxLen - indefiniteNonContentsLen(第13行可见)计算子元素的长度,其中indefiniteNonContentsLen = 4 + extendedTagLen(第9行)。

在格式错误的文件中,indefiniteNonContentsLen可能大于maxLen,导致整数下溢,随后的读取操作无法正确限制,从而可能导致越界读取。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Line 1 	int _A_DecodeElement(ASN_Template *tmplate, unsigned int flags,
Line 2 	  byte *encodedData, unsigned int maxLen, ASN_InputFlush *inputFlush,
Line 3 	  unsigned int *encodingLen, POINTER *handles, char **fieldName)
Line 4 	{
Line 5 	...
Line 6 
Line 7 	  if (*encodingLen == 0)
Line 8 	  {
Line 9 		indefiniteNonContentsLen = 4 + extendedTagLen;
Line 10	  }
Line 11	...
Line 12			if (*encodingLen == 0)
Line 13			  contents.len = maxLen - indefiniteNonContentsLen;

如果攻击者成功利用此漏洞,他们可以使用泄露的内存来绕过ASLR,并与其他漏洞结合,获得执行任意代码的能力。

供应商响应

供应商信息:https://www.dell.com/support/kbdoc/en-us/000205186/bsafe-crypto-c-micro-edition-sdk-end-of-life-announcement

时间线

  • 2025-01-24 - 向供应商披露
  • 2025-10-08 - 供应商发布补丁
  • 2025-10-16 - 公开披露

致谢

Jason Crowder

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计