CVE-2025-66031node-forge是JavaScript中TLS(传输层安全协议)的原生实现。 CVE-2025-66031漏洞存在于node-forge 1.3.1及以下版本中,由于ASN.1解析器存在不受控制的递归问题,远程未认证攻击者可以构造深层ASN.1结构来触发无限递归解析。当解析不受信任的DER( Distinguished Encoding Rules)输入时,会导致栈耗尽,从而引发拒绝服务(DoS)攻击。此漏洞无需任何用户交互或认证即可被利用,攻击复杂度低,攻击成功率较高。受影响的库被广泛应用于Node.js生态系统中的TLS/SSL加密通信、证书验证、PKI操作等场景。
该漏洞的根本原因在于node-forge的ASN.1 DER解析器在处理嵌套的ASN.1结构时缺乏递归深度限制。当解析器遇到递归定义的ASN.1类型(如SEQUENCE、SET或CHOICE)时,会递归调用自身来解析子元素。攻击者可以构造包含大量嵌套深度的恶意DER编码数据,使得解析器在处理时产生大量递归调用。由于JavaScript运行时栈空间有限,过深的递归调用会导致栈溢出,最终导致进程崩溃或服务中断。攻击者只需向使用node-forge处理DER数据的应用发送特制的ASN.1数据即可触发漏洞。漏洞影响所有使用node-forge进行ASN.1/DER解析的功能,包括证书解析、TLS握手、加密消息处理等。修复版本1.3.2通过添加递归深度检查和迭代改写来防止栈溢出。