Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
2fc25fd
lib: flag to conditionally modify proto on deprecate
RafaelGSS Jul 8, 2025
f57ee3d
net: update net.blocklist to allow file save and file management
alphaleadership Jul 8, 2025
ac4f7aa
test: add missing port=0 arg in test-debugger-extract-function-name
dario-piotrowicz Jul 8, 2025
c8a7964
meta: add marco-ippolito to security release stewards
marco-ippolito Jul 9, 2025
e704349
lib: fix incorrect `ArrayBufferPrototypeGetDetached` primordial type
dario-piotrowicz Jul 9, 2025
9d073f3
doc: add sponsorship link to RafaelGSS
RafaelGSS Jul 9, 2025
d02831e
inspector: initial support for Network.loadNetworkResource
islandryu Jul 10, 2025
4a42360
doc: add scroll margin to links
silverwind Jul 10, 2025
1f18451
dns: support max timeout
theanarkh Jul 10, 2025
cb08a5d
doc: add missing `<code>` blocks
aduh95 Jul 10, 2025
3e9ed4b
doc: add stability index to the `--watch-kill-signal` flag
dario-piotrowicz Jul 10, 2025
6a8a73a
tools: ignore CVE mention when linting release proposals
aduh95 Jul 13, 2025
0b84052
doc: remove unused import in `zlib.md`
coderaiser Jul 14, 2025
756c7dd
doc: refine `util.parseArgs` `default` definition
Slayer95 Jul 15, 2025
1b6b5e7
doc: fix typed list formatting
avivkeller Jul 15, 2025
0b5613f
doc: run license-builder
github-actions[bot] Jul 16, 2025
7d747ae
doc: clarify ERR_FS_FILE_TOO_LARGE to reflect fs.readFile() I/O limit
haramj Jul 16, 2025
d0f40f3
tools,test: enforce best practices to detect never settling promises
aduh95 Jul 16, 2025
0b93ca3
doc: add RafaelGSS as steward July 25
RafaelGSS Jul 16, 2025
0f0ce63
build: remove suppressions.supp
RafaelGSS Jul 17, 2025
4a12f5d
test: mark test-inspector-network-fetch as flaky on Windows
joyeecheung Jul 17, 2025
ff6be2e
node-api,doc: update links to ecma262 with section names
legendecas Jul 18, 2025
cda1dab
crypto: add tls.setDefaultCACertificates()
joyeecheung Jul 18, 2025
a23562f
test: update `startCLI` to set `--port=0` by default
dario-piotrowicz Jul 20, 2025
8440b61
benchmark: reduce N for diagnostics_channel subscribe benchmark
artimmy Jul 20, 2025
fa1a532
doc: fix typo in writing-test.md
SeokhunEom Jul 21, 2025
ba380f7
doc: avoid suggesting testing fast api with intense loop
legendecas Jul 21, 2025
d332957
test: skip tests that cause timeouts on IBM i
abmusse Jul 21, 2025
c637a2c
src: add cache to nearest parent package json
IlyasShabi Jul 21, 2025
0dcc84c
deps: update corepack to 0.34.0
nodejs-github-bot Jul 22, 2025
79c5a8f
deps: upgrade openssl sources to openssl-3.0.17
nodejs-github-bot Jul 20, 2025
f71f427
deps: update archs files for openssl-3.0.17
nodejs-github-bot Jul 20, 2025
89ac344
test: update WPT for WebCryptoAPI to 19d82c57ab
nodejs-github-bot Jul 20, 2025
667c2ce
test: update WPT for WebCryptoAPI to ab08796857
nodejs-github-bot Jul 21, 2025
e419d20
doc: add Aditi-1400 to collaborators
Aditi-1400 Jul 22, 2025
8d60602
perf_hooks: do not expose SafeMap via Histogram wrapper
Renegade334 Jul 22, 2025
039949e
tools: bump @eslint/plugin-kit from 0.3.1 to 0.3.3 in /tools/eslint
dependabot[bot] Jul 22, 2025
5a0fd56
src: remove declarations of removed BaseObject static fns
addaleax Jul 22, 2025
fd4ba38
deps: update googletest to 7e17b15
nodejs-github-bot Jul 22, 2025
e8da171
deps: update sqlite to 3.50.3
nodejs-github-bot Jul 22, 2025
251b65d
meta: move one or more collaborators to emeritus
nodejs-github-bot Jul 23, 2025
3aee762
test: expand linting rules around `assert` w literal messages
addaleax Jul 23, 2025
9075a1a
src: use C++20 `consteval` for `FastStringKey`
addaleax Jul 21, 2025
1e7639e
src: use `FastStringKey` for `TrackV8FastApiCall`
addaleax Jul 21, 2025
e22dddf
util: respect nested formats in styleText
himself65 Jul 23, 2025
6ffaac6
doc: add constraints for mem leak to threat model
RafaelGSS Jul 24, 2025
3c6639e
doc: improve onboarding instructions
joyeecheung Jul 24, 2025
cba0de1
tools: add support for URLs to PR commits in `merge.sh`
aduh95 Jul 24, 2025
e592d73
cli: support `${pid}` placeholder in --cpu-prof-name
haramj Jul 24, 2025
ef1bc3f
doc: fix broken sentence in `URL.parse`
SuperchupuDev Jul 24, 2025
07e173d
benchmark: fix sqlite-is-transaction
RafaelGSS Jul 24, 2025
4e51993
benchmark: drop misc/punycode benchmark
RafaelGSS Jul 24, 2025
2044968
benchmark: small lint fix on _cli.js
RafaelGSS Jul 24, 2025
d0ac331
benchmark: add --track to benchmark
RafaelGSS Jul 25, 2025
f9bc257
tools: clarify README linter error message
joyeecheung Jul 25, 2025
0769e5a
src: call unmask after install signal handler
theanarkh Jul 25, 2025
1b9b5bd
benchmark: adjust configuration for string-decoder bench
RafaelGSS Jul 25, 2025
74e1aa4
process: make execve's args argument optional
mureinik Jul 26, 2025
b549dea
doc: copyedit SECURITY.md
Trott Jul 26, 2025
3a9aca9
test: fix flaky test-worker-message-port-transfer-filehandle test
himself65 Jul 26, 2025
8615ea6
buffer: cache Environment::GetCurrent to avoid repeated calls
mertcanaltin Jul 26, 2025
d7e2376
test: prepare test-crypto-rsa-dsa for newer OpenSSL
richardlau May 1, 2025
b30a211
build,deps,tools: prepare to update to OpenSSL 3.5
richardlau Jul 25, 2025
feec26d
test: use mustSucceed in test-fs-read
mete0rfish Jul 27, 2025
bace73a
doc: update the instruction on how to verify releases
aduh95 Jul 27, 2025
4acf7cd
module: throw error when re-runing errored module jobs
joyeecheung Jul 9, 2025
0eec5cc
module: fix conditions override in synchronous resolve hooks
joyeecheung Jul 26, 2025
667ee82
test: don't use expose internals in test-http-outgoing-buffer.js
nektro Jul 28, 2025
035da74
process: add threadCpuUsage
ShogunPanda Feb 21, 2025
491f390
worker: add cpuUsage for worker
theanarkh Jul 28, 2025
b7577d8
test: make test-inspector-network-resource sequential
islandryu Jul 28, 2025
9892b15
doc: format safely for `doc-kit`
avivkeller Jul 28, 2025
cbb0a8e
doc: add note on process memoryUsage
fengmk2 Jul 11, 2025
409c66d
doc: fix typo in `test/common/README.md`
ri7116 Jul 28, 2025
a8f381a
src: add nullptr checks in `StreamPipe::New`
wooffie Jul 28, 2025
8f2b8b3
tools: allow selecting test subsystems with numbers in their names
RaisinTen Jul 29, 2025
6590023
http2: set Http2Stream#sentHeaders for raw headers
RaisinTen Jul 29, 2025
38bafc5
deps: V8: backport 493cb53691be
legendecas Jun 30, 2025
a663f7f
benchmark: add calibrate-n script
RafaelGSS Jul 29, 2025
ad2089e
fs: correct error message when FileHandle is transferred
himself65 Jul 29, 2025
9b9d300
benchmark: add fs warmup to writefile-promises
brunocroh Jul 29, 2025
6aec5ae
lib: prefer AsyncIteratorPrototype primordial
Renegade334 Jul 29, 2025
43b5a21
doc: add path.join and path.normalize clarification
RafaelGSS Jul 30, 2025
57fe96f
src: added CHECK_NOT_NULL check for multiple eq_wrap_async
F3lixTheCat Jul 31, 2025
ebaaf2c
doc: add manpage entry for --use-system-ca
joyeecheung Jul 31, 2025
45200b4
tools: update coverage GitHub Actions to fixed version
Trott Aug 18, 2025
ce93b8b
doc: add WDYT to glossary
btea Aug 1, 2025
4619fe0
fs: fix glob TypeError on restricted dirs
Sylphy-0xd3ac Aug 1, 2025
4aefcfc
node-api: reword "implementation in an alternative VM" as implementable
legendecas Aug 1, 2025
a28e5f0
lib: add type names in source mapped stack traces
legendecas Aug 1, 2025
e666e06
meta: add nodejs/path to path files
RafaelGSS Aug 1, 2025
c12c534
lib: docs deprecate _http_*
bjohansebas Aug 2, 2025
a100cce
test: deflake stream-readable-to-web test
Ethan-Arrowood Aug 2, 2025
6dbda6c
typings: improve internal binding types
targos Aug 2, 2025
212263a
doc: clarify release candidate stability index
panva Aug 2, 2025
cd857a9
lib: use validateString
hotpineapple Aug 2, 2025
70a5862
meta: add tsc and build team as codeowners building.md
RafaelGSS Aug 2, 2025
68bec19
test: add known issue test for fs.cpSync dereference bug
jasnell Aug 2, 2025
946eab8
lib: handle superscript variants on windows device
RafaelGSS Aug 2, 2025
a46ed50
doc: clarify the need of compiler compatible with c++20
RafaelGSS Aug 2, 2025
7f767a2
doc: correct orthography `eg.` → `e.g.`
JakobJingleheimer Aug 3, 2025
438cb11
test: update WPT resources,WebCryptoAPI,webstorage
panva Aug 3, 2025
46c339e
meta: add mailmap entry for aditi-1400
Aditi-1400 Aug 3, 2025
133d410
src: use C++20 `contains()` method
iknoom Jul 31, 2025
390a9dc
http: add server.keepAliveTimeoutBuffer option
haramj Aug 4, 2025
8e697d1
zlib: add dictionary support to zstdCompress and zstdDecompress
lluisemper Aug 4, 2025
19d3ed6
deps: update sqlite to 3.50.4
nodejs-github-bot Aug 5, 2025
3cc11fc
domain: remove deprecated API call
himself65 Aug 5, 2025
b557104
crypto: prepare webcrypto key import/export for modern algorithms
panva Aug 5, 2025
9254257
lib: restructure assert to become a class
miguelmarcondesf Aug 5, 2025
0edf171
doc: run license-builder
github-actions[bot] Aug 6, 2025
9af8bce
doc: fix grammar in global dispatcher usage
Juneezee Aug 6, 2025
446ee98
meta: clarify pr objection process further
jasnell Aug 6, 2025
fde9434
doc: fix missing reference links for server.keepAliveTimeoutBuffer
wlgh1553 Aug 7, 2025
63cc069
src: mark realm leaf classes final
addaleax Aug 4, 2025
76dab34
deps: support madvise(3C) across ALL illumos revisions
danmcd Aug 7, 2025
73aa0ae
assert: change utils to use index instead of for...of
JinhyeokFang Aug 7, 2025
a5e9759
lib: do not modify prototype deprecated asyncResource
RafaelGSS Jul 24, 2025
3deb536
build: fix node_use_sqlite for GN builds
codebytere Aug 9, 2025
9d801a3
typings: improve internal binding types
meteorqz6 Aug 9, 2025
2c5d0aa
doc: fix Pbkdf2Params hash attribute heading
panva Aug 9, 2025
8dd0926
test,crypto: skip unsupported ciphers
codebytere Aug 9, 2025
e44ef07
doc: rename x509.extKeyUsage to x509.keyUsage
panva Aug 9, 2025
3366e60
src: use simdjson to parse SEA configuration
joyeecheung Aug 1, 2025
8e2076a
cli: add NODE_USE_SYSTEM_CA=1
joyeecheung Aug 10, 2025
d22d2fa
lib: optimize writable stream buffer clearing
ri7116 Aug 11, 2025
264a838
lib: add trace-sigint APIs
theanarkh Aug 11, 2025
dfe3a11
benchmark: remove deprecated _extend from benchmark
RafaelGSS Aug 11, 2025
3375a6c
test: deflake sequential/test-tls-session-timeout
joyeecheung Aug 11, 2025
e22aeaa
doc: add missing section for `setReturnArrays` in `sqlite.md`
geeksilva97 Jul 17, 2025
f64f5df
doc: fix `--use-system-ca` history
joyeecheung Aug 8, 2025
177ed3b
esm: js-string Wasm builtins in ESM Integration
guybedford Aug 5, 2025
fa9a9e9
esm: unflag --experimental-wasm-modules
guybedford Aug 5, 2025
f8fe685
2025-08-28, Version 22.19.0 'Jod' (LTS)
nodejs-github-bot Aug 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
/doc/contributing/**/* @nodejs/tsc
/GOVERNANCE.md @nodejs/tsc
/SECURITY.md @nodejs/tsc
/BUILDING.md @nodejs/build @nodejs/tsc
/LICENSE @nodejs/tsc
/onboarding.md @nodejs/tsc

Expand Down Expand Up @@ -223,3 +224,8 @@
/lib/internal/inspector/* @nodejs/inspector
/lib/internal/inspector_* @nodejs/inspector
/lib/inspector.js @nodejs/inspector

# path
/lib/path.js @nodejs/path
/lib/path/* @nodejs/path
/test/parallel/test-path-* @nodejs/path
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux-without-intl.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/coverage-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,6 @@ jobs:
- name: Clean tmp
run: rm -rf coverage/tmp && rm -rf out
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/coverage-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,6 @@ jobs:
- name: Clean tmp
run: npx rimraf ./coverage/tmp
- name: Upload
uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3
uses: codecov/codecov-action@39a2af19d997be74586469d4062e173ecae614f6 # v5.4.3+
with:
directory: ./coverage
2 changes: 1 addition & 1 deletion .github/workflows/lint-release-proposal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
EXPECTED_TRAILER="^$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/pull/[[:digit:]]+\$"
echo "Expected trailer format: $EXPECTED_TRAILER"
PR_URL="$(git --no-pager log -1 --format='%(trailers:key=PR-URL,valueonly)')"
echo "Actual: $ACTUAL"
echo "Actual: $PR_URL"
echo "$PR_URL" | grep -E -q "$EXPECTED_TRAILER"

PR_HEAD="$(gh pr view "$PR_URL" --json headRefOid -q .headRefOid)"
Expand Down
1 change: 1 addition & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Abdirahim Musse <abdirahim.musse@ibm.com> <33973272+abmusse@users.noreply.github
Abe Fettig <abefettig@gmail.com> <abe@fettig.net>
Abhimanyu Vashisht <abhimanyuvashisht.av@gmail.com>
Adam Langley <agl@imperialviolet.org> <agl@google.com>
Aditi Singh <aditisingh1400@gmail.com>
Akhil Marsonya <akhil.marsonya27@gmail.com>
Akhil Marsonya <akhil.marsonya27@gmail.com> <16393876+marsonya@users.noreply.github.com>
Akito Ito <akito0107@gmail.com> <akito_ito@r.recruit.co.jp>
Expand Down
5 changes: 5 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,6 +281,11 @@ export CXX=g++-12
make -j4
```

> \[!IMPORTANT]
> If you face a compilation error during this process such as
> `error: no matching conversion for functional-style cast from 'unsigned int' to 'TypeIndex'`
> Make sure to use a `g++` or `clang` version compatible with C++20.

We can speed up the builds by using [Ninja](https://ninja-build.org/). For more
information, see
[Building Node.js with Ninja](doc/contributing/building-node-with-ninja.md).
Expand Down
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ release.
</tr>
<tr>
<td valign="top">
<b><a href="doc/changelogs/CHANGELOG_V22.md#22.18.0">22.18.0</a></b><br/>
<b><a href="doc/changelogs/CHANGELOG_V22.md#22.19.0">22.19.0</a></b><br/>
<a href="doc/changelogs/CHANGELOG_V22.md#22.18.0">22.18.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V22.md#22.17.1">22.17.1</a><br/>
<a href="doc/changelogs/CHANGELOG_V22.md#22.17.0">22.17.0</a><br/>
<a href="doc/changelogs/CHANGELOG_V22.md#22.16.0">22.16.0</a><br/>
Expand Down
27 changes: 26 additions & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -2100,7 +2100,7 @@ The externally maintained libraries used by Node.js are:

- inspector_protocol, located at deps/inspector_protocol, is licensed as follows:
"""
// Copyright 2016 The Chromium Authors. All rights reserved.
// Copyright 2016 The Chromium Authors.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
Expand Down Expand Up @@ -2639,3 +2639,28 @@ The externally maintained libraries used by Node.js are:
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""

- sonic-boom, located at lib/internal/streams/fast-utf8-stream.js, is licensed as follows:
"""
MIT License

Copyright (c) 2017 Matteo Collina

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1661,7 +1661,7 @@ HAS_DOCKER ?= $(shell command -v docker > /dev/null 2>&1; [ $$? -eq 0 ] && echo

.PHONY: gen-openssl
ifeq ($(HAS_DOCKER), 1)
DOCKER_COMMAND ?= docker run -it -v $(PWD):/node
DOCKER_COMMAND ?= docker run --rm -u $(shell id -u) -v $(PWD):/node
IS_IN_WORKTREE = $(shell grep '^gitdir: ' $(PWD)/.git 2>/dev/null)
GIT_WORKTREE_COMMON = $(shell git rev-parse --git-common-dir)
DOCKER_COMMAND += $(if $(IS_IN_WORKTREE), -v $(GIT_WORKTREE_COMMON):$(GIT_WORKTREE_COMMON))
Expand Down
53 changes: 27 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,37 +95,27 @@ _docs_ subdirectory. Version-specific documentation is also at

### Verifying binaries

Download directories contain a `SHASUMS256.txt` file with SHA checksums for the
files.
Download directories contain a `SHASUMS256.txt.asc` file with SHA checksums for the
files and the releaser PGP signature.

To download `SHASUMS256.txt` using `curl`:
You can get a trusted keyring from nodejs/release-keys, e.g. using `curl`:

```bash
curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt
curl -fsLo "/path/to/nodejs-keyring.kbx" "https://github.com/nodejs/release-keys/raw/HEAD/gpg/pubring.kbx"
```

To check that downloaded files match the checksum, use `sha256sum`:
Alternatively, you can import the releaser keys in your default keyring, see
[Release keys](#release-keys) for commands to how to do that.

```bash
sha256sum -c SHASUMS256.txt --ignore-missing
```

For Current and LTS, the GPG detached signature of `SHASUMS256.txt` is in
`SHASUMS256.txt.sig`. You can use it with `gpg` to verify the integrity of
`SHASUMS256.txt`. You will first need to import
[the GPG keys of individuals authorized to create releases](#release-keys).

See [Release keys](#release-keys) for commands to import active release keys.

Next, download the `SHASUMS256.txt.sig` for the release:
Then, you can verify the files you've downloaded locally
(if you're using your default keyring, pass `--keyring="${GNUPGHOME:-~/.gnupg}/pubring.kbx"`):

```bash
curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt.sig
curl -fsO "https://nodejs.org/dist/${VERSION}/SHASUMS256.txt.asc" \
&& gpgv --keyring="/path/to/nodejs-keyring.kbx" --output SHASUMS256.txt < SHASUMS256.txt.asc \
&& shasum --check SHASUMS256.txt --ignore-missing
```

Then use `gpg --verify SHASUMS256.txt.sig SHASUMS256.txt` to verify
the file's signature.

## Building Node.js

See [BUILDING.md](BUILDING.md) for instructions on how to build Node.js from
Expand Down Expand Up @@ -289,6 +279,8 @@ For information about the governance of the Node.js project, see
**Abdirahim Musse** <<abdirahim.musse@ibm.com>>
* [addaleax](https://github.com/addaleax) -
**Anna Henningsen** <<anna@addaleax.net>> (she/her)
* [Aditi-1400](https://github.com/Aditi-1400) -
**Aditi Singh** <<aditisingh1400@gmail.com>> (she/her)
* [aduh95](https://github.com/aduh95) -
**Antoine du Hamel** <<duhamelantoine1995@gmail.com>> (he/him) - [Support me](https://github.com/sponsors/aduh95)
* [anonrig](https://github.com/anonrig) -
Expand Down Expand Up @@ -383,8 +375,6 @@ For information about the governance of the Node.js project, see
**Chengzhong Wu** <<legendecas@gmail.com>> (he/him)
* [lemire](https://github.com/lemire) -
**Daniel Lemire** <<daniel@lemire.me>>
* [Linkgoron](https://github.com/Linkgoron) -
**Nitzan Uziely** <<linkgoron@gmail.com>>
* [LiviaMedeiros](https://github.com/LiviaMedeiros) -
**LiviaMedeiros** <<livia@cirno.name>>
* [ljharb](https://github.com/ljharb) -
Expand Down Expand Up @@ -424,7 +414,7 @@ For information about the governance of the Node.js project, see
* [Qard](https://github.com/Qard) -
**Stephen Belanger** <<admin@stephenbelanger.com>> (he/him)
* [RafaelGSS](https://github.com/RafaelGSS) -
**Rafael Gonzaga** <<rafael.nunu@hotmail.com>> (he/him)
**Rafael Gonzaga** <<rafael.nunu@hotmail.com>> (he/him) - [Support me](https://github.com/sponsors/RafaelGSS)
* [RaisinTen](https://github.com/RaisinTen) -
**Darshan Sen** <<raisinten@gmail.com>> (he/him) - [Support me](https://github.com/sponsors/RaisinTen)
* [richardlau](https://github.com/richardlau) -
Expand Down Expand Up @@ -597,6 +587,8 @@ For information about the governance of the Node.js project, see
**Lance Ball** <<lball@redhat.com>> (he/him)
* [Leko](https://github.com/Leko) -
**Shingo Inoue** <<leko.noor@gmail.com>> (he/him)
* [Linkgoron](https://github.com/Linkgoron) -
**Nitzan Uziely** <<linkgoron@gmail.com>>
* [lucamaraschi](https://github.com/lucamaraschi) -
**Luca Maraschi** <<luca.maraschi@gmail.com>> (he/him)
* [lundibundi](https://github.com/lundibundi) -
Expand Down Expand Up @@ -806,8 +798,11 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
* **Ulises Gascón** <<ulisesgascongonzalez@gmail.com>>
`A363A499291CBBC940DD62E41F10027AF002F8B0`

To import the full set of trusted release keys (including subkeys possibly used
to sign releases):
You can use the keyring the project maintains at
<https://github.com/nodejs/release-keys/raw/refs/heads/main/gpg-only-active-keys/pubring.kbx>.
Alternatively, you can import them from a public key server. Have in mind that
the project cannot guarantee the availability of the server nor the keys on
that server.

```bash
gpg --keyserver hkps://keys.openpgp.org --recv-keys 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 # Antoine du Hamel
Expand Down Expand Up @@ -867,6 +862,9 @@ verify a downloaded file.
* **Timothy J Fontaine** <<tjfontaine@gmail.com>>
`7937DFD2AB06298B2293C3187D33FF9D0246406D`

The project maintains a keyring able to verify all past releases of Node.js at
<https://github.com/nodejs/release-keys/raw/refs/heads/main/gpg/pubring.kbx>.

</details>

### Security release stewards
Expand All @@ -882,6 +880,9 @@ releases on a rotation basis as outlined in the
* [Datadog](https://www.datadoghq.com/)
* [bengl](https://github.com/bengl) -
**Bryan English** <<bryan@bryanenglish.com>> (he/him)
* [HeroDevs](https://www.herodevs.com/)
* [marco-ippolito](https://github.com/marco-ippolito) -
**Marco Ippolito** <<marcoippolito54@gmail.com>> (he/him)
* [NodeSource](https://nodesource.com/)
* [juanarbol](https://github.com/juanarbol) -
**Juan José Arboleda** <<soyjuanarbol@gmail.com>> (he/him)
Expand Down
43 changes: 32 additions & 11 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,22 @@ does not trust is considered a vulnerability:
the correct use of Node.js APIs.
* The unavailability of the runtime, including the unbounded degradation of its
performance.
* Memory leaks qualify as vulnerabilities when all of the following criteria are met:
* The API is being correctly used.
* The API doesn't have a warning against its usage in a production environment.
* The API is public and documented.
* The API is on stable (2.0) status.
* The memory leak is significant enough to cause a denial of service quickly
or in a context not controlled by the user (for example, HTTP parsing).
* The memory leak is directly exploitable by an untrusted source without requiring application mistakes.
* The leak cannot be reasonably mitigated through standard operational practices (like process recycling).
* The leak occurs deterministically under normal usage patterns rather than edge cases.
* The leak occurs at a rate that would cause practical resource exhaustion within a practical timeframe under
typical workloads.
* The attack demonstrates [asymmetric resource consumption](https://cwe.mitre.org/data/definitions/405.html),
where the attacker expends significantly fewer resources than what's required by the server to process the
attack. Attacks requiring comparable resources on the attacker's side (which can be mitigated through common
practices like rate limiting) may not qualify.

If Node.js loads configuration files or runs code by default (without a
specific request from the user), and this is not documented, it is considered a
Expand All @@ -125,7 +141,7 @@ Vulnerabilities related to this case may be fixed by a documentation update.
* The data received from the remote end of outbound network connections
that are created through the use of Node.js APIs and
which is transformed/validated by Node.js before being passed
to the application EXCEPT with respect to payload length. Node.js trusts
to the application **except** with respect to payload length. Node.js trusts
that applications make connections/requests which will avoid payload
sizes that will result in a Denial of Service.
* HTTP APIs (all flavors) client APIs.
Expand All @@ -146,9 +162,9 @@ then untrusted input must not lead to arbitrary JavaScript code execution.

**Node.js trusts everything else**. Examples include:

* The developers and infrastructure that runs it.
* The developers and infrastructure that run it.
* The operating system that Node.js is running under and its configuration,
along with anything under control of the operating system.
along with anything under the control of the operating system.
* The code it is asked to run, including JavaScript, WASM and native code, even
if said code is dynamically loaded, e.g., all dependencies installed from the
npm registry.
Expand All @@ -163,6 +179,11 @@ then untrusted input must not lead to arbitrary JavaScript code execution.
See <https://nodejs.org/api/modules.html#all-together>.
* The `node:wasi` module does not currently provide the comprehensive file
system security properties provided by some WASI runtimes.
* The execution path is trusted. Additionally, Node.js path manipulation functions
such as `path.join()` and `path.normalize()` trust their input. Reports about issues
related to these functions that rely on unsanitized input are not considered vulnerabilities
requiring CVEs, as it's the user's responsibility to sanitize path inputs according to
their security requirements.

Any unexpected behavior from the data manipulation from Node.js Internal
functions may be considered a vulnerability if they are exploitable via
Expand All @@ -184,12 +205,12 @@ the community they pose.

* Node.js provides APIs to validate handling of Subject Alternative Names (SANs)
in certificates used to connect to a TLS/SSL endpoint. If certificates can be
crafted which result in incorrect validation by the Node.js APIs that is
crafted that result in incorrect validation by the Node.js APIs that is
considered a vulnerability.

#### Inconsistent Interpretation of HTTP Requests (CWE-444)

* Node.js provides APIs to accept http connections. Those APIs parse the
* Node.js provides APIs to accept HTTP connections. Those APIs parse the
headers received for a connection and pass them on to the application.
Bugs in parsing those headers which can result in request smuggling are
considered vulnerabilities.
Expand All @@ -202,9 +223,9 @@ the community they pose.

#### External Control of System or Configuration Setting (CWE-15)

* If Node.js automatically loads a configuration file which is not documented
* If Node.js automatically loads a configuration file that is not documented
and modification of that configuration can affect the confidentiality of
data protected using the Node.js APIs this is considered a vulnerability.
data protected using the Node.js APIs, then this is considered a vulnerability.

### Examples of non-vulnerabilities

Expand All @@ -227,7 +248,7 @@ the community they pose.

#### External Control of System or Configuration Setting (CWE-15)

* If Node.js automatically loads a configuration file which is documented
* If Node.js automatically loads a configuration file that is documented,
no scenario that requires modification of that configuration file is
considered a vulnerability.

Expand All @@ -247,9 +268,9 @@ the community they pose.

## Assessing experimental features reports

Experimental features are eligible to reports as any other stable feature of
Node.js. They will also be susceptible to receiving the same severity score
as any other stable feature.
Experimental features are eligible for security reports just like any other
stable feature of Node.js. They may also receive the same severity score that a
stable feature would.

## Receiving security updates

Expand Down
4 changes: 2 additions & 2 deletions benchmark/_cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@ CLI.prototype.getCpuCoreSetting = function() {
const isValid = /^(\d+(-\d+)?)(,\d+(-\d+)?)*$/.test(value);
if (!isValid) {
throw new Error(`
Invalid CPUSET format: "${value}". Please use a single core number (e.g., "0"),
a range of cores (e.g., "0-3"), or a list of cores/ranges
Invalid CPUSET format: "${value}". Please use a single core number (e.g., "0"),
a range of cores (e.g., "0-3"), or a list of cores/ranges
(e.g., "0,2,4" or "0-2,4").\n\n${this.usage}
`);
}
Expand Down
Loading
Loading