Skip to content

upgrade: move the Node 24 line onto the v24.22.1 security release - #13

Open
fogtape wants to merge 2 commits into
recipefrom
upgrade/node24.22.1
Open

fogtape wants to merge 2 commits into
recipefrom
upgrade/node24.22.1

Conversation

@fogtape

@fogtape fogtape commented Oct 21, 2026

Copy link
Copy Markdown
Owner

What this does

Moves the Node 24 line off the 24.22.0 release-proposal snapshot and onto
the official v24.22.1 LTS security release
(ce7aaf1cee78b8cf0ce17364260535c418d3ed26), bumping the mobile version to
24.22.1-0.

docs/UPGRADING.md requires exactly this step once the official tag exists:
compare the proposal with the published tag, update the pin, regenerate and
rerun the gates. The comparison is clean — the reviewed proposal commit
(a5d0eb95) differs from the published v24.22.0 tag only in
doc/changelogs/CHANGELOG_V24.md — so no unreviewed source change rides
along.

Why it matters

v24.22.1 is upstream's security release for this line: seven CVEs covering
tls IP normalization and non-canonical IP addresses, dns resolve null bytes,
the http agent data guard, the permission model in realpathSync, crypto
snapshot random caches and brotli block-switch decoding. It also carries
OpenSSL 3.5.9, c-ares 1.34.9, undici 7.30.1, tzdata 2026e, root certificates
NSS 3.131.1 and the rejection of certificate chains with blocked public keys.
These are the surfaces the lite runtime keeps (HTTP/TLS/crypto/fetch/dns/zlib),
and this line builds OpenSSL from source, so it takes the 3.5.9 update
directly.

Rebase

All 20 patches apply. Only two change, and only in context/line numbers:
common.gypi (v8_embedder_string) and the mobile adjustment in
src/crypto/crypto_context.cc, whose upstream X.509 hardening lands ahead of
the mobile hunks. The mobile hunks themselves are unchanged.

test-crypto-random-cache-snapshot is excluded on Android and iOS: it builds
and runs snapshots through common/snapshot, which spawns child Node
executables — the same limitation as the existing snapshot exclusions. The
other new regressions (tls non-canonical IP and SPKI blocklist, dns null
bytes, http agent pending read, X.509 name conversion) stay runnable and the
full device suite confirms them.

Verification

  • A clean reconstruction from a fresh shallow clone of nodejs/node@v24.22.1
    reproduces tree 1d7a16b3d618c697f4da5a6762d065f33688a3cc, matching
    expected-tree.txt.
  • Local gates pass: upstream-clone (5), flavor/ICU (5), runtime stripping (1),
    device compatibility (1), emulator preparation (7), Android proxy (10), iOS
    smoke (4), release control, and the Android suite coverage check — 3776
    runnable cases across 16 shards with no gaps or duplicates.
  • Partition check (20 patches / 124 owned paths / 95 fork-only files), curated
    list lint (239 entries), zero workflow files in the product tree, and the
    test-edit audit all pass.

release-ready.txt and release-upstream-snapshot.txt are left empty: the
line is backed by an official tag now, and arming a version is the reviewed
Cut release step. Android/iOS compilation and the device gates remain for
CI.

Replace the 24.22.0 release-proposal snapshot with the official v24.22.1
tag (ce7aaf1) and bump the mobile version to
24.22.1-0. The reviewed proposal commit differs from the published v24.22.0
tag only in doc/changelogs/CHANGELOG_V24.md, so the pin swap carries no
unreviewed source change.

The rebase re-emitted 20 patches; only two changed, and only in context/line
numbers: common.gypi (v8_embedder_string) and the mobile adjustment in
src/crypto/crypto_context.cc, whose upstream X.509 hardening lands ahead of
the mobile hunks. The mobile hunks themselves are unchanged.

This is upstream's security release for the line: seven CVEs covering tls IP
normalization and non-canonical IP addresses, dns resolve null bytes, the
http agent data guard, the permission model in realpathSync, crypto snapshot
random caches and brotli block-switch decoding, plus OpenSSL 3.5.9, c-ares
1.34.9, undici 7.30.1, tzdata 2026e, root certificates NSS 3.131.1 and the
rejection of certificate chains with blocked public keys.

test-crypto-random-cache-snapshot is excluded on Android and iOS: it builds
and runs snapshots through common/snapshot, which spawns child Node
executables. The remaining new in-process regressions stay runnable and the
full device suite confirms them.

A clean reconstruction reproduces tree
1d7a16b3d618c697f4da5a6762d065f33688a3cc (expected-tree.txt). Local recipe
tests pass, including 3776 runnable Android suite cases across 16 shards.
Android/iOS compilation and device validation remain for CI.

release-ready.txt and release-upstream-snapshot.txt are left empty: the line
is backed by an official tag now, and arming a version is the reviewed Cut
release step.

Assisted-by: Codex

Signed-off-by: fogtape <lilixu3210@gmail.com>
The full Android suite fails parallel/test-crypto-x509: upstream 24.22.1 runs
the malformed-certificate legacy conversion in a child so a native regression
is reported as a signal, and an app cannot spawn a child Node. Android's
process.execPath is app_process, which aborts with "Error changing
dalvik-cache ownership : Permission denied" (SIGABRT), and the iOS app has no
executable to spawn either.

Run the same conversion and assertions in-process on both platforms instead.
A native abort still fails the run through the harness crash verdict, so the
regression is still caught.

A clean reconstruction reproduces tree
59a1f9b50b39080936dc0e78838b3945da83d8e0 (expected-tree.txt).

Assisted-by: Codex
Signed-off-by: fogtape <lilixu3210@gmail.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant