Forge JavaScript库签名验证漏洞分析

本文详细分析了Forge JavaScript库中一个关键的签名验证绕过漏洞(CVE-2025-12816)。该漏洞源于ASN.1验证函数缺陷,允许攻击者通过精心构造的数据绕过加密验证,影响X.509证书、PKCS#7消息等多种协议的安全性。

Forge JavaScript库受签名验证漏洞影响

漏洞编号 VU#521113 原始发布日期:2025-11-25 | 最后修订日期:2025-11-25

概述

Forge JavaScript库提供与TLS相关的加密实用程序。已发现一个漏洞,允许通过精心构造的ASN.1结构(特别是在消息认证码数据等字段中)绕过签名验证。建议node-forge软件包的用户及下游消费者及时更新到已修补的版本。

描述

Forge(也可作为node-forge npm包使用)提供一系列加密功能,包括证书生成、消息签名和验证以及加密和解密。这些功能依赖于库的ASN.1解析和验证例程。

asn1.validate函数中发现一个缺陷,该缺陷允许被篡改的ASN.1数据即使在密码学上不正确也能通过验证。通过在某些需要递归验证的ASN.1字段中嵌入自定义选项,攻击者可以构造出对Forge验证例程看似有效的数据。一项使用被篡改的PKCS#12 MAC数据的概念验证演示了如何通过伪造的有效载荷绕过签名验证。

报告此问题的研究人员描述了该漏洞的潜在影响如下:

因此,依赖node-forge来强制ASN.1衍生加密协议(包括X.509证书、PKCS#7消息和PKCS#12存档)结构和完整性的应用程序可能会被欺骗,从而成功验证格式错误的数据。

虽然不同环境在实际暴露程度上会有所不同,但底层的验证绕过在技术上具有重要意义。该软件包被广泛使用,并且已发布修复程序。已修补的版本1.3.2现已可用,其中包含在tests/security/cve-2025-12816.js中更新的测试用例,说明了更正后的行为。

影响

能够提供精心构造的ASN.1数据的攻击者,可能会导致依赖Forge进行验证的应用程序接受伪造或修改的数据为合法数据。这可能允许身份验证绕过、篡改已签名的数据或滥用证书相关功能。在加密验证在信任决策中起核心作用的环境中,潜在影响可能很严重。

解决方案

更新到Forge 1.3.2或更高版本。该修复程序可在拉取请求#1124中找到。开发人员应将更新后的版本集成到他们的项目中,并通过正常的发布渠道分发更新。

致谢

感谢Palo Alto Networks的Hunter Wodzenski负责任地报告了此问题。本文档由Vijay Sarvepalli撰写。

供应商信息

521113

供应商 状态 通知日期 更新日期 声明日期 声明
Digital Bazaar 受影响 2025-10-13 2025-11-25 2025年11月20日 CVE-2025-12816 受影响
我们尚未收到供应商的声明。

参考资料

其他信息

  • CVE ID: CVE-2025-12816
  • API URL: VINCE JSON | CSAF
  • 公开日期: 2025-11-25
  • 首次发布日期: 2025-11-25
  • 最后更新日期: 2025-11-25 19:41 UTC
  • 文档修订版本: 3
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计