<?xml version="1.0" encoding="UTF-8"?>
<cvrfdoc xmlns="http://www.icasi.org/CVRF/schema/cvrf/1.1" xmlns:cvrf="http://www.icasi.org/CVRF/schema/cvrf/1.1">
	<DocumentTitle xml:lang="en">An update for nodejs is now available for openEuler-24.03-LTS-SP3</DocumentTitle>
	<DocumentType>Security Advisory</DocumentType>
	<DocumentPublisher Type="Vendor">
		<ContactDetails>openeuler-security@openeuler.org</ContactDetails>
		<IssuingAuthority>openEuler security committee</IssuingAuthority>
	</DocumentPublisher>
	<DocumentTracking>
		<Identification>
			<ID>openEuler-SA-2026-1952</ID>
		</Identification>
		<Status>Final</Status>
		<Version>1.0</Version>
		<RevisionHistory>
			<Revision>
				<Number>1.0</Number>
				<Date>2026-04-17</Date>
				<Description>Initial</Description>
			</Revision>
		</RevisionHistory>
		<InitialReleaseDate>2026-04-17</InitialReleaseDate>
		<CurrentReleaseDate>2026-04-17</CurrentReleaseDate>
		<Generator>
			<Engine>openEuler SA Tool V1.0</Engine>
			<Date>2026-04-17</Date>
		</Generator>
	</DocumentTracking>
	<DocumentNotes>
		<Note Title="Synopsis" Type="General" Ordinal="1" xml:lang="en">nodejs security update</Note>
		<Note Title="Summary" Type="General" Ordinal="2" xml:lang="en">An update for nodejs is now available for openEuler-24.03-LTS-SP3</Note>
		<Note Title="Description" Type="General" Ordinal="3" xml:lang="en">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.

Security Fix(es):

A 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`.

When 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`.

* This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**(CVE-2026-21710)

A 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.

Node.js already provides timing-safe comparison primitives used elsewhere in the codebase, indicating this is an oversight rather than an intentional design decision.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x**.(CVE-2026-21713)

A 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.

This vulnerability affects HTTP2 users on Node.js 20, 22, 24 and 25.(CVE-2026-21714)

A 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.

As 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.

This 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)

An 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.

As 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.

This 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)

A 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.

The 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.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x**.(CVE-2026-21717)</Note>
		<Note Title="Topic" Type="General" Ordinal="4" xml:lang="en">An update for nodejs is now available for master/openEuler-20.03-LTS-SP4/openEuler-22.03-LTS-SP4/openEuler-24.03-LTS/openEuler-24.03-LTS-Next/openEuler-24.03-LTS-SP1/openEuler-24.03-LTS-SP2/openEuler-24.03-LTS-SP3/openEuler-22.03-LTS-SP3.

openEuler Security has rated this update as having a security impact of high. A Common Vunlnerability Scoring System(CVSS)base score,which gives a detailed severity rating, is available for each vulnerability from the CVElink(s) in the References section.</Note>
		<Note Title="Severity" Type="General" Ordinal="5" xml:lang="en">High</Note>
		<Note Title="Affected Component" Type="General" Ordinal="6" xml:lang="en">nodejs</Note>
	</DocumentNotes>
	<DocumentReferences>
		<Reference Type="Self">
			<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
		</Reference>
		<Reference Type="openEuler CVE">
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21710</URL>
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21713</URL>
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21714</URL>
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21715</URL>
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21716</URL>
			<URL>https://www.openeuler.org/en/security/cve/detail/?cveId=CVE-2026-21717</URL>
		</Reference>
		<Reference Type="Other">
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21710</URL>
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21713</URL>
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21714</URL>
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21715</URL>
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21716</URL>
			<URL>https://nvd.nist.gov/vuln/detail/CVE-2026-21717</URL>
		</Reference>
	</DocumentReferences>
	<ProductTree xmlns="http://www.icasi.org/CVRF/schema/prod/1.1">
		<Branch Type="Product Name" Name="openEuler">
			<FullProductName ProductID="openEuler-24.03-LTS-SP3" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">openEuler-24.03-LTS-SP3</FullProductName>
		</Branch>
		<Branch Type="Package Arch" Name="x86_64">
			<FullProductName ProductID="nodejs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-debuginfo-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-debuginfo-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-debugsource-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-debugsource-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-devel-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-devel-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-full-i18n-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-full-i18n-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-libs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-libs-20.18.2-7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="npm-10.8.2-1.20.18.2.7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">npm-10.8.2-1.20.18.2.7.oe2403sp3.x86_64.rpm</FullProductName>
			<FullProductName ProductID="v8-devel-11.3.244.8-1.20.18.2.7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">v8-devel-11.3.244.8-1.20.18.2.7.oe2403sp3.x86_64.rpm</FullProductName>
		</Branch>
		<Branch Type="Package Arch" Name="noarch">
			<FullProductName ProductID="nodejs-docs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-docs-20.18.2-7.oe2403sp3.noarch.rpm</FullProductName>
		</Branch>
		<Branch Type="Package Arch" Name="aarch64">
			<FullProductName ProductID="nodejs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-debuginfo-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-debuginfo-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-debugsource-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-debugsource-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-devel-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-devel-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-full-i18n-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-full-i18n-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="nodejs-libs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-libs-20.18.2-7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="npm-10.8.2-1.20.18.2.7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">npm-10.8.2-1.20.18.2.7.oe2403sp3.aarch64.rpm</FullProductName>
			<FullProductName ProductID="v8-devel-11.3.244.8-1.20.18.2.7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">v8-devel-11.3.244.8-1.20.18.2.7.oe2403sp3.aarch64.rpm</FullProductName>
		</Branch>
		<Branch Type="Package Arch" Name="src">
			<FullProductName ProductID="nodejs-20.18.2-7" CPE="cpe:/a:openEuler:openEuler:24.03-LTS-SP3">nodejs-20.18.2-7.oe2403sp3.src.rpm</FullProductName>
		</Branch>
	</ProductTree>
	<Vulnerability Ordinal="1" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">A 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`.

When 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`.

* This vulnerability affects all Node.js HTTP servers on **20.x, 22.x, 24.x, and v25.x**</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21710</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>High</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>7.5</BaseScore>
				<Vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
	<Vulnerability Ordinal="2" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">A 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.

Node.js already provides timing-safe comparison primitives used elsewhere in the codebase, indicating this is an oversight rather than an intentional design decision.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x**.</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21713</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>Medium</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>5.9</BaseScore>
				<Vector>AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
	<Vulnerability Ordinal="3" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">A 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.

This vulnerability affects HTTP2 users on Node.js 20, 22, 24 and 25.</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21714</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>Medium</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>5.3</BaseScore>
				<Vector>AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
	<Vulnerability Ordinal="4" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">A 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.

As 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.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x** processes using the Permission Model where `--allow-fs-read` is intentionally restricted.</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21715</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>Low</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>3.3</BaseScore>
				<Vector>AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
	<Vulnerability Ordinal="5" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">An 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.

As 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.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x** processes using the Permission Model where `--allow-fs-write` is intentionally restricted.</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21716</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>Low</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>3.3</BaseScore>
				<Vector>AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
	<Vulnerability Ordinal="6" xmlns="http://www.icasi.org/CVRF/schema/vuln/1.1">
		<Notes>
			<Note Title="Vulnerability Description" Type="General" Ordinal="1" xml:lang="en">A 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.

The 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.

This vulnerability affects **20.x, 22.x, 24.x, and 25.x**.</Note>
		</Notes>
		<ReleaseDate>2026-04-17</ReleaseDate>
		<CVE>CVE-2026-21717</CVE>
		<ProductStatuses>
			<Status Type="Fixed">
				<ProductID>openEuler-24.03-LTS-SP3</ProductID>
			</Status>
		</ProductStatuses>
		<Threats>
			<Threat Type="Impact">
				<Description>Medium</Description>
			</Threat>
		</Threats>
		<CVSSScoreSets>
			<ScoreSet>
				<BaseScore>5.9</BaseScore>
				<Vector>AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H</Vector>
			</ScoreSet>
		</CVSSScoreSets>
		<Remediations>
			<Remediation Type="Vendor Fix">
				<Description>nodejs security update</Description>
				<DATE>2026-04-17</DATE>
				<URL>https://www.openeuler.org/zh/security/security-bulletins/detail/?id=openEuler-SA-2026-1952</URL>
			</Remediation>
		</Remediations>
	</Vulnerability>
</cvrfdoc>