Description
Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, node-forge did not validate the AES-GCM tagLength option passed to start() during decryption through forge.cipher.createDecipher(). When an application derived tagLength from received data or used an unset or zero-like configuration value, a value that converted to zero together with an empty or missing authentication tag caused the calculated and supplied tags to compare as empty, so decipher.finish() accepted unauthenticated ciphertext. Applications that omit tagLength to use the 128-bit default or pass a fixed valid tag length are unaffected. This issue is fixed in version 1.4.1.
Published: 2026-10-29
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: Authentication Bypass
Action: Patch Update
AI Analysis

Impact

The flaw arises because node-forge does not validate the tagLength option supplied to the AES-GCM decryptor. When an attacker supplies a tagLength derived from untrusted data or leaves it unset, the library treats a zero value and an absent authentication tag as an empty tag. During finish() the empty tags match, letting the decrypt call succeed without authenticating the ciphertext. This bypass allows an attacker to decrypt, forge, or tamper with protected data, compromising confidentiality and integrity. The vulnerability falls under CWE-1284 and CWE-354.

Affected Systems

Affected software is the digitalbazaar:forge JavaScript library (node-forge) in all releases prior to version 1.4.1. Any application that depends on an older node‑forge version and performs AES‑GCM decryption with an unvalidated tagLength, or whose configuration may allow a zero‑like value, is susceptible. The issue is resolved in the 1.4.1 release.

Risk and Exploitability

The CVSS base score of 5.9 indicates moderate severity. EPSS is not available and the vulnerability is not listed in CISA KEV, suggesting no widespread public exploitation at this time. Attackers would need to supply crafted ciphertext that uses an undefined or zero-length tagLength, which is plausible in applications that derive the parameter from network or user input. Because the flaw requires manipulation of the encryption parameters, the attack vector is at the application layer rather than remote network exploitation. Nonetheless, an unauthenticated decryption can have serious downstream consequences.

Generated by OpenCVE AI on October 29, 2026 at 20:36 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade the node‑forge library to version 1.4.1 or later.
  • In your decryption logic, explicitly set the AES‑GCM tagLength to a valid value (e.g., 128 bits) instead of deriving it from external data.
  • Add a runtime check that the authentication tag is non‑empty and that tagLength is non‑zero before calling decipher.finish()

Generated by OpenCVE AI on October 29, 2026 at 20:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 29 Oct 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Digitalbazaar
Digitalbazaar forge
Vendors & Products Digitalbazaar
Digitalbazaar forge

Thu, 29 Oct 2026 19:30:00 +0000

Type Values Removed Values Added
Description Forge (also called node-forge) is a native implementation of Transport Layer Security in JavaScript. Prior to 1.4.1, node-forge did not validate the AES-GCM tagLength option passed to start() during decryption through forge.cipher.createDecipher(). When an application derived tagLength from received data or used an unset or zero-like configuration value, a value that converted to zero together with an empty or missing authentication tag caused the calculated and supplied tags to compare as empty, so decipher.finish() accepted unauthenticated ciphertext. Applications that omit tagLength to use the 128-bit default or pass a fixed valid tag length are unaffected. This issue is fixed in version 1.4.1.
Title Forge: AES-GCM authentication bypass via unvalidated tagLength option
Weaknesses CWE-1284
CWE-354
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N'}


Subscriptions

Digitalbazaar Forge
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-29T20:24:15.290Z

Reserved: 2026-10-29T16:04:48.727Z

Link: CVE-2026-119186

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-29T20:17:29.500

Modified: 2026-10-29T20:17:29.500

Link: CVE-2026-119186

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-29T20:30:18Z

Weaknesses
  • CWE-1284

    Improper Validation of Specified Quantity in Input

  • CWE-354

    Improper Validation of Integrity Check Value