CVE-2026-33894node-forge是一个JavaScript的原生TLS实现库。在1.4.0版本之前,该库在RSASSA PKCS#1 v1.5签名验证过程中存在严重缺陷。该漏洞允许攻击者针对使用低公钥指数(e=3)的密钥伪造有效的数字签名。攻击者可以通过在ASN.1结构内部填充“垃圾”字节来构造能够通过验证的签名,这利用了Bleichenbacher风格的伪造技术。与之前的CVE-2022-24771不同,此漏洞是在ASN结构内部的附加字段中添加字节。此外,由于forge未验证签名包含规范定义的最小8字节填充,进一步为攻击者提供了构造伪造签名的空间。
该漏洞的根源在于node-forge对PKCS#1 v1.5签名验证的逻辑实现不严谨。在标准的RSA签名验证中,必须严格检查填充(PS)和ASN.1数据的格式。然而,受影响版本的node-forge在解析时,对于低公钥指数(如e=3)的密钥,未能正确限制ASN.1结构中多余的字节。攻击者利用Bleichenbacher攻击原理,通过精心构造签名数据,将恶意数据嵌入ASN.1结构的内部字段中,从而绕过验证器的检查。由于算法未强制执行RFC规范中要求的至少8字节PS长度检查,攻击者获得了更大的灵活性来计算满足模运算条件的伪造签名。成功利用此漏洞可使攻击者在不知晓私钥的情况下伪造身份签名,严重破坏系统数据的完整性和信任机制。