戴尔ControlVault3 WBDI驱动硬编码密码漏洞分析

本文详细披露了戴尔ControlVault3中基于Broadcom BCM5820X芯片的WBDI驱动程序存在的硬编码密码漏洞。攻击者可利用此漏洞通过特制的API调用,篡改其他用户的生物特征模板或载荷数据,涉及身份验证机制的核心缺陷。

TALOS-2025-2173 || Cisco Talos情报集团 - 全面威胁情报

戴尔ControlVault3 ControlVault WBDI驱动硬编码密码漏洞

发布日期: 2025年11月17日 CVE编号: CVE-2025-31649

摘要

戴尔ControlVault3 5.14.3.0版本中的ControlVault WBDI驱动程序功能存在一个硬编码密码漏洞。特制的ControlVault API调用可导致执行特权操作。攻击者可以发出API调用来触发此漏洞。

已确认受影响版本

以下版本经过Talos测试或验证为易受攻击,或已由供应商确认易受攻击。

  • Broadcom BCM5820X
  • Dell ControlVault3 5.14.3.0

产品链接

CVSSv3评分

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

CWE

CWE-798 - 使用硬编码凭证

详细分析

戴尔ControlVault是一种基于硬件的解决方案,可以安全地存储密码、生物特征模板和安全代码。它可以与智能卡、近场通信(NFC)设备和指纹读取器交互。该硬件解决方案基于Broadcom BCM5820X芯片系列。

Control Vault WBDI Driver是Broadcom对Windows生物识别驱动程序接口(WBDI)的实现,它利用Control Vault硬件通过Windows API提供生物识别功能。相关功能在三个DLL文件(BrcmEngineAdapter.dllBrcmSensorAdapter.dllBrcmStorageAdapter.dll)内部实现。本报告中的漏洞发现于Broadcom的引擎和存储适配器实现内部。

当用户希望通过Windows生物识别框架注册新指纹时,会启动一个多步骤过程,包括捕获指纹并生成所谓的“模板”存储在设备上。指向此模板的句柄会从Control Vault设备发送回Windows,然后存储在存储适配器的数据库中。Windows也可能提供一个“Payload”对象,该对象将在后续与指纹读取器交互时用于验证读取器和模板信息。

模板(和载荷)被视为敏感信息,因此,Broadcom驱动程序通过一个(未公开记录的)身份验证参数来保护对这些对象的访问。Control Vault支持各种未公开记录的身份验证机制,但在本例中,Broadcom做出了一个奇怪的选择,即使用硬编码的密码来保护这些对象。因此,任何知道该密码短语的用户都可以篡改模板和载荷数据。

我们可以在BrcmEngineAdapter.dll中的WBFUSH_CommitEnrollment函数的以下代码片段中看到这一点:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
*(_DWORD *)pObjAttributes = 0x40000;
*(_DWORD *)pAuthLists = 0xFF0101;
*(_DWORD *)&pAuthLists[4] = 0xD0000;   // [1]
pAuthLists[8] = 12;
strcpy(&pAuthLists[9], "BroadcomWBF");
log_stuf((wchar_t *)L"WBFUSH_CommitEnrollment() calling CSS_FingerprintCommitEnrollment()\n", v12);
status = load_bcm();
if ( !status )
status = CSS_FingerprintCommitEnrollment(
           enrollmentID,
           8u,  // 属性长度
           pObjAttributes,
           0x15u,  // 认证列表长度
           pAuthLists,
           (unsigned int *)pTemplateLength,
           0i64,
           pTemplateHandle);

身份验证列表在[1]处定义,我们可以看到它使用硬编码的短语BroadcomWBF作为密码。

完全相同的代码模式也出现在BrcmEngineAdapter.dll的其他函数中:BrcmEngineAdapterCommitEnrollmentWBFUSH_CreatePayloadObjectWBFUSH_GetPayloadObject,以及BrcmStorageAdapter.dll中的一个函数:WBFUSH_DeleteObject

因此,任何本地用户都有可能篡改其他用户的模板或载荷,也可能泄露其中任一内容。然而,模板的大小对于常规的cv_get_object调用来说过大,因此可能首先需要找到一些创造性的方法(例如,可能依赖于cv_export_object)。

时间线

  • 2025年4月22日 - 向供应商披露
  • 2025年6月13日 - 供应商发布补丁
  • 2025年11月17日 - 公开披露

致谢

由Cisco Talos的Philippe Laulheret发现。

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