漏洞概述
CERT/CC已发布关于Forge JavaScript库(即node-forge npm包)中高影响加密漏洞的警告。该库每周下载量近2100万次,嵌入在无数应用程序、框架和企业软件堆栈中。
被追踪为CVE-2025-12816的漏洞允许攻击者通过操纵Forge验证ASN.1编码数据结构的方式来绕过签名验证。CERT/CC将此问题描述为"通过精心操纵ASN.1结构(特别是在消息认证码数据等字段中)允许绕过签名验证"的漏洞。
影响范围
任何依赖node-forge确保证书完整性、签名消息或安全加密容器的系统都容易受到身份验证绕过和数据篡改的攻击。
Forge提供了一系列加密功能,包括:
- X.509证书生成和验证
- PKCS#7签名和验证
- PKCS#12安全存档处理
- 加密和解密例程
所有这些功能都依赖于其内部ASN.1解析逻辑。
技术细节
根据CERT/CC的说法,问题在于Forge的asn1.validate函数,其中"被篡改的ASN.1数据即使密码学上不正确也能通过验证"。
攻击者可以将特别设计的选项嵌入到嵌套的ASN.1对象中,使得:
- 该结构对Forge显示为有效
- 即使底层加密数据不正确或伪造
- 允许签名检查在应该失败时通过
已演示的概念验证显示,被操纵的PKCS#12 MAC数据可以被当作合法的通过验证,尽管已被恶意修改。
风险系统
CERT/CC转达了研究人员的警告:“依赖node-forge强制执行ASN.1衍生加密协议结构和完整性的应用程序…可能被诱骗成功验证格式错误的数据。”
面临风险的系统包括任何使用Forge验证以下内容的系统:
- X.509证书
- PKCS#7签名消息
- PKCS#12安全容器
- 加密签名的软件或部署包
- 依赖ASN.1结构的自定义协议
实际影响
在实际场景中,这可能允许:
- 冒充可信身份
- 接受被篡改的软件包
- 破坏安全存档
- 削弱基于Forge构建的TLS类机制
- 绕过基于证书完整性的身份验证工作流
考虑到node-forge的普遍性——从开发工具到供应链系统——威胁面极其广泛。
修复措施
维护者已发布Forge 1.3.2版本,完全修复了此问题。开发人员和安全团队应立即更新到Forge 1.3.2,审计依赖代码路径,并将此作为任何依赖加密正确性的环境中的优先修补程序。