CVE-2026-33891
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk44th percentile - higher than 44% of all known CVEs
Summary
A Denial of Service (DoS) vulnerability exists in node-forge before version 1.4.0 due to an infinite loop in the BigInteger.modInverse() function. Calling this function with a zero value causes the process to hang indefinitely and consume 100% CPU.
Risk Assessment
An attacker can remotely cause a denial of service by sending a specially crafted request that triggers modInverse with zero, leading to application hang and CPU exhaustion.
Recommendation
Immediately update node-forge to version 1.4.0 or later, which contains the fix for the infinite loop.
Other vulnerabilities in node-forge
See all- CVE-2026-33896High
A vulnerability in node-forge before version 1.4.0 allows bypassing RFC 5280 basicConstraints requirements during certificate chain verification. The lack of enforcement enables any leaf certificate (without basicConstraints and keyUsage extensions) to act as a CA and sign other certificates, which node-forge will accept as valid.
- CVE-2026-33895High
The node-forge library before version 1.4.0 accepts non-canonical Ed25519 signatures where the scalar S is not reduced modulo the group order (S >= L). Both a valid signature and its S+L variant are considered valid, while the OpenSSL-backed implementation rejects the S+L variant as per the specification.
- CVE-2026-33894High
The node-forge library before version 1.4.0 has a vulnerability in RSASSA PKCS#1 v1.5 signature verification for low public exponent keys (e=3). Attackers can forge signatures by inserting garbage bytes into the ASN structure, enabling Bleichenbacher-style forgery. This issue is similar to CVE-2022-24771 but differs in the location of the inserted bytes.
Original NVD description (English source)
Forge (also called `node-forge`) is a native implementation of Transport Layer Security in JavaScript. Prior to version 1.4.0, a Denial of Service (DoS) vulnerability exists in the node-forge library due to an infinite loop in the BigInteger.modInverse() function (inherited from the bundled jsbn library). When modInverse() is called with a zero value as input, the internal Extended Euclidean Algorithm enters an unreachable exit condition, causing the process to hang indefinitely and consume 100% CPU. Version 1.4.0 patches the issue.

