Skip to content

fix: run Request Node on patched Node 22 - #31

Merged
MantisClone merged 1 commit into
mainfrom
fix/REQ-716-gateway-node-security
Oct 31, 2026
Merged

MantisClone merged 1 commit into
mainfrom
fix/REQ-716-gateway-node-security

Conversation

@MantisClone

Copy link
Copy Markdown
Contributor

Problem

The Request Node Docker image still uses end-of-life Node 18.19.0. The tested 0.38.0 image also accepts the compromised eMudhra certificate chains. This addresses the runtime upgrade requested in private issue 236 and the current security update in REQ-716.

Proposed Solution

Use Node 22.23.4 on Alpine 3.23 for the gateway build and runtime. Pin the base image by its SHA-256 digest and record the source repository and commit in the image labels.

Design Rationale

Node 22 provides the required security fixes and is already used by the SDK. The gateway image is built here, so changing the SDK toolchain alone would not update its deployed runtime. The companion SDK PR updates its build toolchain. Preserve the existing release inputs and version tags.

Considerations

Merge this change before the normal SDK release, targeting client SDK 0.66.0 and gateway 0.52.0. SDK release-tools then builds the image using the exact released gateway package. Verify that build succeeds and validate its published digest in staging before production. Retain the previous deployed image/configuration for rollback. No ongoing 0.38.x maintenance line is planned.

The gateway upgrade includes application and dependency changes, including topic-query pagination and Lit authorization behavior. Validate existing clients against those changes. The local build reports Lit deprecation warnings; test that integration if the gateway uses it. PostgreSQL, IPFS, Graph application and host-package updates are outside this PR.

Validation

  • Gateway 0.51.0 builds locally for amd64 and its CLI loads on Node 22.23.4. Its health endpoint returns 200; readiness and writes return 503 before initialization. These checks did not create or read real requests.
  • That image rejects all 14 compromised-certificate test chains with CERT_REVOKED and connects successfully to both legitimate HTTPS test sites.
  • The complete npm dependency inventory was compared with the old 0.38.0 image. The application and library versions change; the full comparison is available for assessment.
  • The workflow file passes a YAML syntax check. We have not run it in GitHub Actions.
  • Gateway 0.52.0 still needs its own image and dependency checks, successful amd64/arm64 builds, and the staging tests below. Retest the exact published image.

UAT

  1. Save each staging gateway's current Docker image and configuration for rollback. Record several existing requests and their expected contents.
  2. Deploy the gateway 0.52.0 image built with Node 22.23.4. Confirm it becomes ready and stays ready.
  3. Read the recorded requests using both the currently used client version and SDK 0.66.0. Confirm the data matches. Check request listings, including pagination, for missing or duplicate results.
  4. Create a staging test request and wait for confirmation. Read it using a new client instance and confirm its contents.
  5. Confirm the gateway can connect to its legitimate HTTPS services and rejects the compromised certificate chains.
  6. After staging passes, deploy the same Docker image to production, identified by its SHA-256 digest. Repeat the read and security checks. Create production test requests only if approved.

If checks fail, restore the previous image and configuration. Keep stored data intact. Check whether pending submissions completed before retrying them.

@greptile-apps

greptile-apps Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The reviewed changes appear safe to merge; no actionable issues were found.

Summary

Updates Request Node’s build and runtime base to digest-pinned Node 22.23.4 on Alpine 3.23.

  • Request Node images now use a digest-pinned Node 22.23.4 base.
  • New Request Node images identify their source repository and build commit.

Reviews (1) · Last reviewed commit: "fix: run Request Node on patched Node 22" · Reviewed by Greptile

MantisClone added a commit to RequestNetwork/requestNetwork that referenced this pull request Oct 30, 2026
# Problem

The SDK still selects Node 22.14.0 locally and 22.14 in CircleCI, before the October security fixes. Tracked in [REQ-716](https://linear.app/requestnetwork/issue/REQ-716).

# Proposed Solution

Use Node 22.23.4 in `.nvmrc` and CircleCI. This PR changes only those two version selections.

# Design Rationale

The update stays within Node 22, which the SDK already supports through [PR 1595](#1595). Native-loader, confirmation and test corrections are separated into prerequisite [#1777](#1777).

# Considerations

Merge #1777 first. The [docker-images companion PR](RequestNetwork/docker-images#31) updates the gateway runtime separately; this PR alone does not patch a running gateway.

The planned normal release targets client SDK 0.66.0 and gateway 0.52.0. Installing the SDK does not upgrade a consuming application's Node runtime. Final package/image checks and staging request submission/readback remain required before production.

# Validation

With the prerequisite fixes, the three affected Request Client suites pass 103 tests on Node 22.23.4 using packaged native binaries. Two localhost-dependent cases are excluded; one is already skipped. Retry passes 9 tests. Native installation/loading also passes in `cimg/node:22.23.4` without a compiled addon. YAML parsing passes. Fresh hosted checks remain pending.

# UAT

Confirm the existing CircleCI build and test jobs pass on Node 22.23.4.
@MantisClone
MantisClone merged commit b42496c into main Oct 31, 2026
1 check passed
@MantisClone
MantisClone deleted the fix/REQ-716-gateway-node-security branch October 31, 2026 04:24
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.

3 participants