{"schema_version":"1.7.2","id":"OESA-2026-1954","modified":"2026-04-17T13:02:11Z","published":"2026-04-17T13:02:11Z","upstream":["CVE-2026-21710","CVE-2026-21713","CVE-2026-21714","CVE-2026-21715","CVE-2026-21716","CVE-2026-21717"],"summary":"nodejs security update","details":"Node.js is a platform built on Chrome&amp;apos;s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.\r\n\r\nSecurity Fix(es):\n\nA flaw in Node.js HTTP request handling causes an uncaught `TypeError` when a request is received with a header named `__proto__` and the application accesses `req.headersDistinct`.\n\nWhen this occurs, `dest[&quot;__proto__&quot;]` resolves to `Object.prototype` rather than `undefined`, causing `.push()` to be called on a non-array. This exception is thrown synchronously inside a property getter and cannot be intercepted by `error` event listeners, meaning it cannot be handled without wrapping every `req.headersDistinct` access in a `try/catch`.\n\n* This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**(CVE-2026-21710)\n\nA flaw in Node.js HMAC verification uses a non-constant-time comparison when validating user-provided signatures, potentially leaking timing information proportional to the number of matching bytes. Under certain threat models where high-resolution timing measurements are possible, this behavior could be exploited as a timing oracle to infer HMAC values.\n\nNode.js already provides timing-safe comparison primitives used elsewhere in the codebase, indicating this is an oversight rather than an intentional design decision.\n\nThis vulnerability affects **20.x, 22.x, 24.x, and 25.x**.(CVE-2026-21713)\n\nA memory leak occurs in Node.js HTTP/2 servers when a client sends WINDOW_UPDATE frames on stream 0 (connection-level) that cause the flow control window to exceed the maximum value of 2³¹-1. The server correctly sends a GOAWAY frame, but the Http2Session object is never cleaned up.\n\nThis vulnerability affects HTTP2 users on Node.js 20, 22, 24 and 25.(CVE-2026-21714)\n\nA flaw in Node.js Permission Model filesystem enforcement leaves `fs.realpathSync.native()` without the required read permission checks, while all comparable filesystem functions correctly enforce them.\n\nAs a result, code running under `--permission` with restricted `--allow-fs-read` can still use `fs.realpathSync.native()` to check file existence, resolve symlink targets, and enumerate filesystem paths outside of permitted directories.\n\nThis vulnerability affects **20.x, 22.x, 24.x, and 25.x** processes using the Permission Model where `--allow-fs-read` is intentionally restricted.(CVE-2026-21715)\n\nAn incomplete fix for CVE-2024-36137 leaves `FileHandle.chmod()` and `FileHandle.chown()` in the promises API without the required permission checks, while their callback-based equivalents (`fs.fchmod()`, `fs.fchown()`) were correctly patched.\n\nAs a result, code running under `--permission` with restricted `--allow-fs-write` can still use promise-based `FileHandle` methods to modify file permissions and ownership on already-open file descriptors, bypassing the intended write restrictions.\n\nThis vulnerability affects **20.x, 22.x, 24.x, and 25.x** processes using the Permission Model where `--allow-fs-write` is intentionally restricted.(CVE-2026-21716)\n\nA flaw in V8&apos;s string hashing mechanism causes integer-like strings to be hashed to their numeric value, making hash collisions trivially predictable. By crafting a request that causes many such collisions in V8&apos;s internal string table, an attacker can significantly degrade performance of the Node.js process.\n\nThe most common trigger is any endpoint that calls `JSON.parse()` on attacker-controlled input, as JSON parsing automatically internalizes short strings into the affected hash table.\n\nThis vulnerability affects **20.x, 22.x, 24.x, and 25.x**.(CVE-2026-21717)","affected":[{"package":{"ecosystem":"openEuler:24.03-LTS-SP1","name":"nodejs","purl":"pkg:rpm/openEuler/nodejs&distro=openEuler-24.03-LTS-SP1"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"20.18.2-7.oe2403sp1"}]}],"ecosystem_specific":{"aarch64":["nodejs-20.18.2-7.oe2403sp1.aarch64.rpm","nodejs-debuginfo-20.18.2-7.oe2403sp1.aarch64.rpm","nodejs-debugsource-20.18.2-7.oe2403sp1.aarch64.rpm","nodejs-devel-20.18.2-7.oe2403sp1.aarch64.rpm","nodejs-full-i18n-20.18.2-7.oe2403sp1.aarch64.rpm","nodejs-libs-20.18.2-7.oe2403sp1.aarch64.rpm","npm-10.8.2-1.20.18.2.7.oe2403sp1.aarch64.rpm","v8-devel-11.3.244.8-1.20.18.2.7.oe2403sp1.aarch64.rpm"],"noarch":["nodejs-docs-20.18.2-7.oe2403sp1.noarch.rpm"],"src":["nodejs-20.18.2-7.oe2403sp1.src.rpm"],"x86_64":["nodejs-20.18.2-7.oe2403sp1.x86_64.rpm","nodejs-debuginfo-20.18.2-7.oe2403sp1.x86_64.rpm","nodejs-debugsource-20.18.2-7.oe2403sp1.x86_64.rpm","nodejs-devel-20.18.2-7.oe2403sp1.x86_64.rpm","nodejs-full-i18n-20.18.2-7.oe2403sp1.x86_64.rpm","nodejs-libs-20.18.2-7.oe2403sp1.x86_64.rpm","npm-10.8.2-1.20.18.2.7.oe2403sp1.x86_64.rpm","v8-devel-11.3.244.8-1.20.18.2.7.oe2403sp1.x86_64.rpm"]}}],"references":[{"type":"ADVISORY","url":"https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1954"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21710"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21713"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21714"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21715"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21716"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-21717"}],"database_specific":{"severity":"High"}}
