{"api_version":"1","generated_at":"2026-10-31T00:16:53+00:00","cve":"CVE-2026-119186","urls":{"html":"https://cve.report/CVE-2026-119186","api":"https://cve.report/api/cve/CVE-2026-119186.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-119186","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-119186"},"summary":{"title":"Forge: AES-GCM authentication bypass via unvalidated tagLength option","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.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-10-29 20:17:29","updated_at":"2026-10-30 17:18:03"},"problem_types":["CWE-354","CWE-1284","CWE-354 CWE-354: Improper Validation of Integrity Check Value","CWE-1284 CWE-1284: Improper Validation of Specified Quantity in Input"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"5.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","baseScore":5.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"HIGH","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"5.9","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","data":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.9,"baseSeverity":"MEDIUM","confidentialityImpact":"NONE","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/digitalbazaar/forge/releases/tag/v1.4.1","name":"https://github.com/digitalbazaar/forge/releases/tag/v1.4.1","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/digitalbazaar/forge/commit/236845d96c71207259f91638d0138bba8e2fd624","name":"https://github.com/digitalbazaar/forge/commit/236845d96c71207259f91638d0138bba8e2fd624","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/digitalbazaar/forge/security/advisories/GHSA-5cwg-6vw7-rj6p","name":"https://github.com/digitalbazaar/forge/security/advisories/GHSA-5cwg-6vw7-rj6p","refsource":"134c704f-9b21-4f2e-91b3-4a467353bcc0","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-119186","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119186","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"digitalbazaar","product":"forge","version":"affected < 1.4.1","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"119186","cve":"CVE-2026-119186","epss":"0.002060000","percentile":"0.107090000","score_date":"2026-10-30","updated_at":"2026-10-31 00:01:12"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-119186","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-10-29T20:23:41.622079Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-10-29T20:24:15.290Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"references":[{"tags":["exploit"],"url":"https://github.com/digitalbazaar/forge/security/advisories/GHSA-5cwg-6vw7-rj6p"}],"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"forge","vendor":"digitalbazaar","versions":[{"status":"affected","version":"< 1.4.1"}]}],"descriptions":[{"lang":"en","value":"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."}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.9,"baseSeverity":"MEDIUM","confidentialityImpact":"NONE","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-354","description":"CWE-354: Improper Validation of Integrity Check Value","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-1284","description":"CWE-1284: Improper Validation of Specified Quantity in Input","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-10-29T19:17:26.965Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/digitalbazaar/forge/security/advisories/GHSA-5cwg-6vw7-rj6p","tags":["x_refsource_CONFIRM"],"url":"https://github.com/digitalbazaar/forge/security/advisories/GHSA-5cwg-6vw7-rj6p"},{"name":"https://github.com/digitalbazaar/forge/commit/236845d96c71207259f91638d0138bba8e2fd624","tags":["x_refsource_MISC"],"url":"https://github.com/digitalbazaar/forge/commit/236845d96c71207259f91638d0138bba8e2fd624"},{"name":"https://github.com/digitalbazaar/forge/releases/tag/v1.4.1","tags":["x_refsource_MISC"],"url":"https://github.com/digitalbazaar/forge/releases/tag/v1.4.1"}],"source":{"advisory":"GHSA-5cwg-6vw7-rj6p","discovery":"UNKNOWN"},"title":"Forge: AES-GCM authentication bypass via unvalidated tagLength option"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-119186","datePublished":"2026-10-29T19:17:26.965Z","dateReserved":"2026-10-29T16:04:48.727Z","dateUpdated":"2026-10-29T20:24:15.290Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-10-29 20:17:29","lastModifiedDate":"2026-10-30 17:18:03","problem_types":["CWE-354","CWE-1284","CWE-354 CWE-354: Improper Validation of Integrity Check Value","CWE-1284 CWE-1284: Improper Validation of Specified Quantity in Input"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:H/A:N","baseScore":5.9,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"HIGH","availabilityImpact":"NONE"},"exploitabilityScore":2.2,"impactScore":3.6}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-10-29T20:23:41.622079Z","id":"CVE-2026-119186","options":[{"exploitation":"poc"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"119186","Ordinal":"1","Title":"Forge: AES-GCM authentication bypass via unvalidated tagLength o","CVE":"CVE-2026-119186","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"119186","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"Forge: AES-GCM authentication bypass via unvalidated tagLength o"}]}}}