CVE-2026-33895
HighCVSS 7.5Exploitation Probability (EPSS)
Low risk27th percentile - higher than 27% of all known CVEs
Summary
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.
Risk Assessment
This vulnerability allows signature forgery, potentially bypassing authentication and authorization mechanisms. Applications relying on signature uniqueness (e.g., deduplication, replay tracking, canonicalization checks) are susceptible to signature malleability attacks.
Recommendation
Upgrade node-forge to version 1.4.0 or later immediately. If an upgrade is not feasible, implement additional server-side signature validation to reject signatures with S >= L.
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-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.
- CVE-2026-33891High
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.
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, Ed25519 signature verification accepts forged non-canonical signatures where the scalar S is not reduced modulo the group order (`S >= L`). A valid signature and its `S + L` variant both verify in forge, while Node.js `crypto.verify` (OpenSSL-backed) rejects the `S + L` variant, as defined by the specification. This class of signature malleability has been exploited in practice to bypass authentication and authorization logic (see CVE-2026-25793, CVE-2022-35961). Applications relying on signature uniqueness (i.e., dedup by signature bytes, replay tracking, signed-object canonicalization checks) may be bypassed. Version 1.4.0 patches the issue.

