{"id":"EUVD-2026-77624","enisaUuid":"6ede5c52-3708-34c7-baef-fbcebcb75a6d","description":"node-opcua is an OPC UA implementation for TypeScript and Node.js. Prior to 2.166.0, the process-global g_alreadyUsedNonce cache used by nonceAlreadyBeenUsed in packages/node-opcua-secure-channel/source/server/server_secure_channel_layer.ts records nonces from OpenSecureChannelRequest and CreateSession without expiration or a size limit. An unauthenticated remote attacker can repeatedly create sessions with unique nonces, causing entries to persist after session expiry and accumulate across connection cycles even when maxSessions\u003d10 limits concurrent sessions. The resulting unbounded heap growth can exhaust the default Node.js heap and crash the node-opcua server process. This issue is fixed in version 2.166.0.","datePublished":"Sep 14, 2026, 4:09:07 PM","dateUpdated":"Sep 14, 2026, 4:35:48 PM","baseScore":7.5,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":"https://github.com/node-opcua/node-opcua/security/advisories/GHSA-6wvw-vrw4-363w\nhttps://github.com/node-opcua/node-opcua/commit/b82c2939fe9c658de58da993f2798ec5481d7313\nhttps://github.com/node-opcua/node-opcua/releases/tag/v2.166.0\n","aliases":"CVE-2026-54156\nGHSA-6wvw-vrw4-363w\n","assigner":"GitHub_M","epss":0.78,"enisaIdProduct":[{"id":"c8fe221f-2e8a-396e-a6ec-077bda421ee0","product":{"name":"node-opcua","vendor":{"name":"n/a"}},"product_version":"\u003c 2.166.0"}],"enisaIdVendor":[{"id":"8463dfe8-ae97-3737-b945-ab4e6d176514","vendor":{"name":"node-opcua"}}],"enisaIdVulnerability":[{"id":"985640ca-7599-3815-810e-10636de34a98","vulnerability":{"id":"GHSA-6wvw-vrw4-363w","description":"node-opcua: Unbounded nonce cache enables unauthenticated heap exhaustion DoS","datePublished":"Aug 20, 2026, 6:35:41 PM","dateUpdated":"Aug 27, 2026, 7:04:40 PM","baseScore":0.0,"references":"https://github.com/node-opcua/node-opcua/security/advisories/GHSA-6wvw-vrw4-363w\nhttps://github.com/node-opcua/node-opcua/commit/b82c2939fe9c658de58da993f2798ec5481d7313\nhttps://github.com/node-opcua/node-opcua\nhttps://github.com/node-opcua/node-opcua/releases/tag/v2.166.0\n","enisa_id":"EUVD-2026-77624\n","aliases":"GHSA-6wvw-vrw4-363w\nCVE-2026-54156\n","epss":0.0,"dataProcessed":"Nov 9, 2026, 3:51:44 PM","vulnerabilityProduct":[],"vulnerabilityVendor":[]}},{"id":"fd8ff7cb-f7d5-33fe-bca0-ff9e2b352681","vulnerability":{"id":"CVE-2026-54156","description":"node-opcua is an OPC UA implementation for TypeScript and Node.js. Prior to 2.166.0, the process-global g_alreadyUsedNonce cache used by nonceAlreadyBeenUsed in packages/node-opcua-secure-channel/source/server/server_secure_channel_layer.ts records nonces from OpenSecureChannelRequest and CreateSession without expiration or a size limit. An unauthenticated remote attacker can repeatedly create sessions with unique nonces, causing entries to persist after session expiry and accumulate across connection cycles even when maxSessions\u003d10 limits concurrent sessions. The resulting unbounded heap growth can exhaust the default Node.js heap and crash the node-opcua server process. This issue is fixed in version 2.166.0.","datePublished":"Sep 14, 2026, 4:09:07 PM","dateUpdated":"Sep 14, 2026, 4:35:48 PM","status":"PUBLISHED","baseScore":7.5,"baseScoreVersion":"3.1","baseScoreVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","references":"https://github.com/node-opcua/node-opcua/security/advisories/GHSA-6wvw-vrw4-363w\nhttps://github.com/node-opcua/node-opcua/commit/b82c2939fe9c658de58da993f2798ec5481d7313\nhttps://github.com/node-opcua/node-opcua/releases/tag/v2.166.0\n","enisa_id":"EUVD-2026-77624\n","assigner":"GitHub_M","epss":0.78,"dataProcessed":"Nov 11, 2026, 7:21:55 AM","vulnerabilityProduct":[{"id":"99d268c1-1f17-3d2e-8c59-70622a3816d0","product":{"name":"node-opcua","vendor":{"name":"n/a"}},"product_version":"\u003c 2.166.0"}],"vulnerabilityVendor":[{"id":"5112a533-64cb-3d8e-ba05-ada3ce3674cb","vendor":{"name":"node-opcua"}}]}}],"enisaIdAdvisory":[]}