HIGHCVSS 7.5Vulnerability

CVE-2026-119192

### Summary RSASSA-PKCS1-v1_5 signature verification (`publicKey.verify()` with the default scheme, also used by X.509 certificate and PKCS#7 verification) accepted non-canonical BER encodings of the DigestInfo, such as NULL parameters with content and non-minimal lengths. These leave attacker-controlled bytes inside an accepted DigestInfo, which allows signatures to be forged without the private key for RSA keys with a low public exponent (e=3). Fixed in node-forge 1.4.1. ### Details In `lib/rsa.js`, `key.verify()` with the default `RSASSA-PKCS1-V1_5` scheme removes the padding, parses the recovered DigestInfo with the lenient BER parser `asn1.fromDer()` and checks its structure with `asn1.validate()` against `digestInfoValidator`. Neither requires a canonical DER encoding, so verification accepted, among others: - NULL parameters with content bytes (e.g. `05 40 <64 bytes>`) - non-NULL or constructed values in the parameters position - non-minimal (long form) and indefinite lengths - non-canonical OID encodings (padded subidentifiers, trailing bytes) These leave attacker-controlled bytes inside an accepted DigestInfo. For RSA keys with a low public exponent (e=3) this allows signatures to be forged without the private key (BERserk / Bleichenbacher-style forgery, see CVE-2014-1568). RFC 8017 section 8.2.2 verifies a signature by encoding the expected EMSA-PKCS1-v1_5 message and comparing it with the recovered one; section 9.2 defines the DigestInfo encoding. The fix adds `_encodeDigestInfo()`, which DER-encodes the expected DigestInfo from the digest algorithm OID and the digest (with and without NULL parameters). Verification now requires the recovered DigestInfo to match one of these encodings byte for byte. The same change fixes GHSA-2g46-22mc-6gwp (CVE-2026-85393). #### Patches Fixed in node-forge 1.4.1. Verification now re-encodes the expected DigestInfo and requires a byte-for-byte match (RFC 8017 section 8.2.2). #### Workarounds Do not use RSA keys with

Properties

Severity
high
Summary
Forge: RSA PKCS#1 v1.5 signature forgery via non-canonical DigestInfo encoding
Cvss score
7.5
Retrieved at
2026-11-10T23:34:27+00:00
Ghsa published
2026-11-10T15:57:34Z
Source url
https://github.com/advisories/GHSA-6qrw-m8cv-hcxf
Ghsa updated
2026-11-10T15:57:35Z
Ghsa id
GHSA-6qrw-m8cv-hcxf
Last source
GitHub Advisory Database
Cve id
CVE-2026-119192
Cvss vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
First seen by Signal
2026-11-10T19:29:00+00:00
Is ghsa only
false

Related Entities (3)

AFFECTS (1)

→[Software]npm/node-forge

VULNERABLE_TO (1)

←[Software]npm/node-forge

Related research

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-119192 (CVSS 7.5) — Ninja Signal Threat Intelligence | Ninja Signal