CVE-2026-33896node-forge是JavaScript中TLS的原生实现库。在1.4.0版本之前,其`pki.verifyCertificateChain()`函数存在严重的逻辑缺陷。当中间证书缺少`basicConstraints`和`keyUsage`扩展时,该函数未能正确强制执行RFC 5280标准。这允许攻击者利用普通的叶证书冒充CA机构来签署恶意证书,且node-forge会将该非法证书链验证通过,严重破坏了PKI信任体系。
该漏洞的核心在于node-forge对RFC 5280证书验证规范的实现不严谨。按照标准,充当CA的中间证书必须包含`basicConstraints`扩展,且`CA`位必须为真。然而,受影响版本的`pki.verifyCertificateChain()`仅在证书包含`basicConstraints`或`keyUsage`扩展时才检查CA属性。如果两者都缺失,验证逻辑会错误地默认该证书可以作为CA。攻击者可生成一个没有上述扩展的叶证书,利用它为任意域名(如攻击者控制的服务器)签署有效证书。当受害端使用易受攻击的库验证该证书链时,由于无法识别中间证书的非法CA身份,会错误地建立信任连接,导致中间人攻击或敏感数据泄露。