Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -875,7 +875,7 @@
OPENCLAW_LOCK_SHA256=none-legacy-fixture; \
OPENCLAW_RECIPE='ignore-scripts+reviewed-lifecycle-v1'; \
if [ "$OPENCLAW_VERSION" = "2026.7.1" ]; then \
OPENCLAW_LOCK_SHA256=60f816dcff6f35179b1c48b4c06db9473497760d45ca1831252c27e8b1d2d665; \
OPENCLAW_LOCK_SHA256=248d881ca125bb83da293c4b3f40b46d057095a9fe90b5165255da0de78af9f9; \
ACTUAL_OPENCLAW_LOCK_SHA256="$(sha256sum /usr/local/lib/nemoclaw/openclaw-runtime/package-lock.json | awk '{print $1}')"; \
[ "$ACTUAL_OPENCLAW_LOCK_SHA256" = "$OPENCLAW_LOCK_SHA256" ] \
|| { echo "ERROR: OpenClaw lock SHA-256 mismatch (expected $OPENCLAW_LOCK_SHA256, found $ACTUAL_OPENCLAW_LOCK_SHA256)" >&2; exit 1; }; \
Expand Down Expand Up @@ -1585,10 +1585,10 @@
# CHAT_UI_URL is a non-loopback address (Brev Launchable, remote deployments)
# since terminal-based pairing is impossible in those contexts.
# Default: "0" (device auth enabled for local deployments — secure by default).
ARG NEMOCLAW_DISABLE_DEVICE_AUTH=0

Check warning on line 1588 in Dockerfile

View workflow job for this annotation

GitHub Actions / PR build and direct managed startup (OpenClaw)

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NEMOCLAW_DISABLE_DEVICE_AUTH") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
# Internal audit provenance for the opt-out above. Standard onboarding rewrites
# this to managed-onboard; direct image builders retain operator provenance.
ARG NEMOCLAW_DEVICE_AUTH_OPT_OUT_SOURCE=operator

Check warning on line 1591 in Dockerfile

View workflow job for this annotation

GitHub Actions / PR build and direct managed startup (OpenClaw)

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NEMOCLAW_DEVICE_AUTH_OPT_OUT_SOURCE") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
# Compatibility build arg for older custom Dockerfiles and rebuild tooling.
# NemoClaw-managed images intentionally do not consume it; gateway auth tokens
# are generated at container startup and are never baked into image layers.
Expand Down Expand Up @@ -1622,7 +1622,7 @@
# NEMOCLAW_MESSAGING_PLAN_B64 intentionally remains ARG-only: Docker exposes it
# to build RUN processes without retaining the full plan in the final image env.
# Direct ARG interpolation into inline source is a code injection vector (C-2).
ENV NEMOCLAW_MODEL=${NEMOCLAW_MODEL} \

Check warning on line 1625 in Dockerfile

View workflow job for this annotation

GitHub Actions / PR build and direct managed startup (OpenClaw)

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NEMOCLAW_DEVICE_AUTH_OPT_OUT_SOURCE") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 1625 in Dockerfile

View workflow job for this annotation

GitHub Actions / PR build and direct managed startup (OpenClaw)

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NEMOCLAW_DISABLE_DEVICE_AUTH") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
NEMOCLAW_INFERENCE_PROVIDER_ID=${NEMOCLAW_INFERENCE_PROVIDER_ID} \
NEMOCLAW_UPSTREAM_PROVIDER=${NEMOCLAW_UPSTREAM_PROVIDER} \
NEMOCLAW_PRIMARY_MODEL_REF=${NEMOCLAW_PRIMARY_MODEL_REF} \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -505,7 +505,7 @@ RUN --mount=type=bind,source=nemoclaw-blueprint/blueprint.yaml,target=/tmp/bluep
OPENCLAW_LOCK_SHA256=none-legacy-fixture; \
OPENCLAW_RECIPE='ignore-scripts+reviewed-lifecycle-v1'; \
if [ "$OPENCLAW_VERSION" = "2026.7.1" ]; then \
OPENCLAW_LOCK_SHA256=60f816dcff6f35179b1c48b4c06db9473497760d45ca1831252c27e8b1d2d665; \
OPENCLAW_LOCK_SHA256=248d881ca125bb83da293c4b3f40b46d057095a9fe90b5165255da0de78af9f9; \
ACTUAL_OPENCLAW_LOCK_SHA256="$(sha256sum /usr/local/lib/nemoclaw/openclaw-runtime/package-lock.json | awk '{print $1}')"; \
[ "$ACTUAL_OPENCLAW_LOCK_SHA256" = "$OPENCLAW_LOCK_SHA256" ] \
|| { echo "Error: OpenClaw lock SHA-256 mismatch (expected $OPENCLAW_LOCK_SHA256, found $ACTUAL_OPENCLAW_LOCK_SHA256)"; exit 1; }; \
Expand Down
4 changes: 2 additions & 2 deletions agents/openclaw/dependency-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Update it and `agents/openclaw/mcporter-runtime/package*.json` together whenever
- Advisory review date: 2026-08-11.
- Advisory result: `0` known vulnerabilities across the resolved production dependency graph. npm verified registry signatures for all `120` resolved packages and attestations for `14` packages.
- Security override: `@hono/node-server@2.0.11` (`sha512-bjD221KPLoJTWUwso1J6fGKiTXEUFedG/s0visavY4zakFPkeGURMRNly+FhBHs7T8Dz4qHaZIMX9ZoJHSJtKA==`) replaces the SDK's vulnerable `1.19.14` resolution for `GHSA-frvp-7c67-39w9` and the previously reviewed `2.0.5` resolution affected by `GHSA-9mqv-5hh9-4cgg`. `2.0.5` is the first patched release for `GHSA-frvp-7c67-39w9`. The reviewed v2 range retains the `getRequestListener` API used by `@modelcontextprotocol/sdk`; its Node.js 20 floor is below NemoClaw's Node.js 22.19 floor, and the `/vercel` adapter is not consumed. Mcporter's production path imports the SDK's client transport, not the server adapter, and the image build still exercises the installed CLI after the locked install. Remove the override when the SDK's declared range resolves to a reviewed release outside both affected ranges.
- Security override: `fast-uri@3.1.5` (`sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==`) replaces Ajv's vulnerable `3.1.3` resolution and the initially reviewed `3.1.4` remediation. `GHSA-v2hh-gcrm-f6hx` affects releases through `3.1.3`, and `GHSA-7p8r-x3mc-p8w7` affects releases from `3.0.0` through `3.1.4`. The replacement remains within Ajv's declared `^3.0.1` range and preserves the reviewed v3 API boundary. Remove the override when the declared graph resolves to a reviewed release outside both affected ranges.
- Security override: `fast-uri@3.1.6` (`sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==`) replaces Ajv's vulnerable resolution. `GHSA-5jgf-p345-68v8`, `GHSA-f65p-4m7j-42xc`, `GHSA-fph4-wmhf-6fwf`, and `GHSA-jqff-g426-hqxp` affect earlier 3.x releases; `3.1.6` is the first patched release for all four. The replacement remains within Ajv's declared `^3.0.1` range, preserves the reviewed v3 API boundary, and also remains outside the older `GHSA-v2hh-gcrm-f6hx` and `GHSA-7p8r-x3mc-p8w7` ranges. Remove the override when the declared graph resolves to a reviewed release outside all affected ranges.
- Security override: `hono@4.12.34` (`sha512-GqXJqY/xJkJmuloTrnV1ZEXG3fqte+VjkUqoRNZXcrUidiUOP4fMSIHHY4tsqZBK++kVyWmt/AAfSUuy57/eSA==`) replaces the SDK's vulnerable `4.12.27` resolution.
`GHSA-8j4g-w8fx-2239`, `GHSA-54fx-42gc-7vw4`, `GHSA-f23p-vx2j-j53r`, and `GHSA-79qm-7rj5-m7r9` are fixed in `4.12.34`.
The replacement remains within the SDK's declared `^4.11.4` range and preserves Hono's Node.js `>=16.9.0` contract.
Expand Down Expand Up @@ -62,7 +62,7 @@ The lock records the exact version, registry URL, and integrity for every transi

## Source-of-Truth Boundary

- `invalidState`: the image installs a package graph, tarball, license, or advisory state that differs from the independently queried npm registry records for `mcporter@0.7.3`, resolves `@hono/node-server` to any version other than exact `2.0.11`, resolves `fast-uri` to any version other than exact `3.1.5`, resolves `hono` to any version other than exact `4.12.34`, or resolves `ip-address` to any version other than exact `10.3.1`.
- `invalidState`: the image installs a package graph, tarball, license, or advisory state that differs from the independently queried npm registry records for `mcporter@0.7.3`, resolves `@hono/node-server` to any version other than exact `2.0.11`, resolves `fast-uri` to any version other than exact `3.1.6`, resolves `hono` to any version other than exact `4.12.34`, or resolves `ip-address` to any version other than exact `10.3.1`.
- `sourceBoundary`: npm owns registry metadata, tarball integrity, provenance signatures, and advisory responses; NemoClaw owns the exact lock, script-disabled install, Docker integrity assertion, empty-by-default audit exception registry, and review record.
- `whyNotSourceFix`: a repository note cannot make external registry state trustworthy, so the required `reviewed-npm-audit` CI check materializes the exact locked production graph and verifies its registry signatures.
- `imageBuildBoundary`: image builds verify the committed lock, registry origin, tarball integrity, installed graph, lifecycle suppression, and reviewed advisory policy without connecting to Sigstore.
Expand Down
6 changes: 3 additions & 3 deletions agents/openclaw/mcporter-runtime/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion agents/openclaw/mcporter-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"overrides": {
"@hono/node-server": "2.0.11",
"fast-uri": "3.1.5",
"fast-uri": "3.1.6",
"hono": "4.12.34",
"ip-address": "10.3.1"
},
Expand Down
32 changes: 16 additions & 16 deletions agents/openclaw/openclaw-runtime/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion agents/openclaw/openclaw-runtime/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
},
"overrides": {
"hono": "4.12.34",
"tar": "7.5.21"
"tar": "7.5.21",
"fast-uri": "3.1.6"
},
"engines": {
"node": ">=22.22.3 <23 || >=24.15.0 <25 || >=25.9.0"
Expand Down
9 changes: 3 additions & 6 deletions ci/reviewed-npm-audit.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,8 +96,7 @@
"integrity": "sha512-ge/Xss99CHAjPL/ikmH/UFoiOrjcxDB4sW3y9mhyCD+dYW3wzV7TKbAVdkrXFgAG2d2BjpJofP97zUZ+umxo8g==",
"tarballUrl": "https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1.tgz",
"directory": "agents/openclaw/openclaw-runtime",
"lockSha256": "60f816dcff6f35179b1c48b4c06db9473497760d45ca1831252c27e8b1d2d665",
"replacementLockSha256": "248d881ca125bb83da293c4b3f40b46d057095a9fe90b5165255da0de78af9f9"
"lockSha256": "248d881ca125bb83da293c4b3f40b46d057095a9fe90b5165255da0de78af9f9"
},
{
"id": "mcporter-runtime",
Expand All @@ -106,8 +105,7 @@
"integrity": "sha512-egoPVYqTnWb3NjRIxo+xc8OrAI0dlPrJm9pAiZx0pImuNIV5rKhGtTnIfH/Y1ldGPVu74ibj3KR5c9U/QSdQFA==",
"tarballUrl": "https://registry.npmjs.org/mcporter/-/mcporter-0.7.3.tgz",
"directory": "agents/openclaw/mcporter-runtime",
"lockSha256": "17f2372a0a6949df928333a2f98862ae563013a7682b19a8ce63825c4696a064",
"replacementLockSha256": "720c0e3ec2efcccd2c820ce2a39d733f7bd5bf9d3e6fb95310e7f6cd369db83c"
"lockSha256": "720c0e3ec2efcccd2c820ce2a39d733f7bd5bf9d3e6fb95310e7f6cd369db83c"
},
{
"id": "mcp-tool-discovery-runtime",
Expand All @@ -116,8 +114,7 @@
"integrity": "sha512-xKd8OIzlqNzcqcNumGAa6g+PW2kjD5vrpcKOnfldAUPP3j7lnqMPwlTXQm8gF+UwH72z0lqaRbjr9hqGz0eITA==",
"tarballUrl": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.30.0.tgz",
"directory": "tools/mcp-tool-discovery-runtime",
"lockSha256": "bc7e34d9eb1f72cf3016c8b88c72d3b7682a4f234903cb93b9476b10d7e954eb",
"replacementLockSha256": "0697681f948bda0b59fc1ff2e4c6dbe2693cc89eec64b11b5be604160643c6e5"
"lockSha256": "0697681f948bda0b59fc1ff2e4c6dbe2693cc89eec64b11b5be604160643c6e5"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

> Internal engineering evidence. This file is not part of the public documentation set.

Review date: 2026-07-12
Review date: 2026-09-02

Scope: `test/e2e/fixtures/plugins/weather/package-lock.json` and the secret-free OpenClaw custom-plugin lifecycle regression lane.

Expand All @@ -26,7 +26,7 @@ It does not waive review for production dependencies, and it must be revalidated

Registry packages can later be found vulnerable or compromised, and downloaded package code still participates in fixture compilation and the test plugin runtime despite integrity verification and lifecycle-script suppression.
The accepted residual risk is limited to this secret-free E2E lane with read-only contents permission and must be reconsidered on every fixture manifest or lockfile change.
The release-matched `openclaw@2026.5.27` development graph currently has known advisories, but upgrading it independently would stop this fixture from testing the documented NemoClaw `v0.0.71` runtime contract.
The release-matched `openclaw@2026.7.1` development graph currently has known advisories. Its package-scoped override resolves nested `fast-uri` to reviewed `3.1.6`, removing the host-confusion and SSRF advisory set while preserving the current plugin API compatibility declaration.

## Compensating Controls

Expand All @@ -36,7 +36,7 @@ The release-matched `openclaw@2026.5.27` development graph currently has known a
- The image build fails if a private `node_modules/openclaw` remains, then verifies that OpenClaw creates the expected link to the stock global runtime.
- The GitHub Actions job has read-only `contents` permission, uses full-SHA-pinned actions, and disables checkout credential persistence.
Trusted runs use Docker Hub credentials only to pre-pull the digest-pinned builder image; the workflow then removes Docker auth, and the release-pinned fixture execution receives no repository secrets or Docker credential environment variables.
- The historical NemoClaw `v0.0.71` exercise uses that tagged CLI's onboarding preflight as its OpenShell compatibility boundary instead of applying current-release capability markers to the older stack.
- Historical tagged-CLI upgrade exercises remain separate callers; this weather fixture follows the current reviewed OpenClaw runtime pin.
- The lane is isolated to deterministic test data and uploads only its path-scoped E2E artifact directory.

## Advisory Audit
Expand All @@ -47,11 +47,10 @@ Run from `test/e2e/fixtures/plugins/weather`:
npm audit --package-lock-only --ignore-scripts --json
```

Revalidated on 2026-07-12: npm audit exited `1` and reported 9 vulnerable packages (3 moderate and 6 high; 0 info, low, or critical) across 374 total dependencies.
The affected packages are `@earendil-works/pi-coding-agent`, `@openclaw/fs-safe`, `hono`, `linkify-it`, `markdown-it`, `openclaw`, `protobufjs`, `tar`, and `undici`.
The point-in-time advisory set is GHSA-22p9-wv53-3rq4, GHSA-2gcr-mfcq-wcc3, GHSA-35p6-xmwp-9g52, GHSA-38rv-x7px-6hhq, GHSA-3hrh-pfw6-9m5x, GHSA-6v5v-wf23-fmfq, GHSA-7v5m-pr3q-6453, GHSA-88fw-hqm2-52qc, GHSA-94rc-8x27-4472, GHSA-9c3v-684m-579c, GHSA-f38q-mgvj-vph7, GHSA-f577-qrjj-4474, GHSA-g8m3-5g58-fq7m, GHSA-j6c9-x7qj-28xf, GHSA-jfgx-wxx8-mp94, GHSA-mqxh-6gq7-558m, GHSA-p88m-4jfj-68fv, GHSA-pr7r-676h-xcf6, GHSA-r95r-rj6r-c39x, GHSA-rv63-4mwf-qqc2, GHSA-vmf3-w455-68vh, GHSA-vmh5-mc38-953g, GHSA-vxpw-j846-p89q, GHSA-wcpc-wj8m-hjx6, GHSA-wgpf-jwqj-8h8p, GHSA-wwfh-h76j-fc44, and GHSA-xrhx-7g5j-rcj5.
Revalidated on 2026-09-02: npm audit exited `1` and reported 10 vulnerable packages (4 moderate and 6 high; 0 info, low, or critical) across 311 total dependencies.
The affected packages are `@hono/node-server`, `@openclaw/fs-safe`, `brace-expansion`, `hono`, `ip-address`, `openclaw`, `protobufjs`, `qs`, `tar`, and `undici`; `fast-uri` is absent from the advisory report.
The advisories are in the release-pinned OpenClaw development graph; the Docker build suppresses lifecycle scripts and prunes development and peer dependencies before copying the plugin into the runtime image.
The reviewed lockfile has SHA-256 `a2bc0bc3d55cce607652ce0471d0a1f05148cf98ead8d63b9ecad1ac8e2585bb`, and every non-root package entry records both its resolved registry URL and integrity value.
The reviewed lockfile has SHA-256 `36f8e08c8dca622017c943e4b41d1758651b2911e6c44b96e26cba4ea05b2556`, and every non-root package entry records both its resolved registry URL and integrity value.

The audit is a point-in-time advisory check, not a substitute for the exact lockfile, lifecycle-script suppression, or secret-free workflow boundary.
Rerun it whenever `package.json` or `package-lock.json` changes and again before merge if npm advisory state changes.
Expand Down
22 changes: 11 additions & 11 deletions internal/security-reviews/openclaw-2026.7.1-dependency-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

Review date: 2026-07-21

Last updated: 2026-08-21
Last updated: 2026-09-02

## Decision

Expand All @@ -24,15 +24,15 @@ release in both committed production locks. Do not add an audit exception.

The production OpenClaw install uses the authoritative committed lock at
`agents/openclaw/openclaw-runtime/package-lock.json`, with SHA-256
`60f816dcff6f35179b1c48b4c06db9473497760d45ca1831252c27e8b1d2d665`.
`248d881ca125bb83da293c4b3f40b46d057095a9fe90b5165255da0de78af9f9`.
NemoClaw derives that lock from the SRI-verified `openclaw@2026.7.1` archive
after applying the reviewed dependency remediation.
The committed `nemoclaw/package-lock.json` has SHA-256
`66bef669196bb1c61385871e369542d3c321c277adb0f0e2e9f0ad972106b163`.
The protected managed-image build's locked npm cache seed binds that same lock
digest and the exact `tar@7.5.21` archive.
The remediation replaces `brace-expansion@5.0.7` with `5.0.9`.
It also replaces `fast-uri@3.1.2` with `3.1.5` and `ip-address@10.2.0` with
It also replaces `fast-uri@3.1.2` with `3.1.6` and `ip-address@10.2.0` with
`10.3.1` in the OpenClaw core graph.
It replaces `tar@7.5.19` with `7.5.21` in the core manifest and shrinkwrap,
including the `@openclaw/fs-safe@0.4.1` optional dependency edge.
Expand All @@ -47,7 +47,7 @@ the npm upgrade. Each completed image reasserts the idempotent repair at its
final filesystem boundary.
The same reviewed `undici@8.10.0` replacement applies to the OpenClaw core
dependency and the Discord manifest, shrinkwrap, and bundled package tree.
The committed mcporter lock also selects `fast-uri@3.1.5` and
The committed mcporter lock also selects `fast-uri@3.1.6` and
`ip-address@10.3.1`.
Both committed runtime locks select `hono@4.12.34`.
Image builds verify the lock digest and installed production graph before they
Expand All @@ -68,7 +68,7 @@ whose amd64 config reports Node `22.23.1`.
- `openclaw@2026.7.1`
- `sha512-ge/Xss99CHAjPL/ikmH/UFoiOrjcxDB4sW3y9mhyCD+dYW3wzV7TKbAVdkrXFgAG2d2BjpJofP97zUZ+umxo8g==`
- `https://registry.npmjs.org/openclaw/-/openclaw-2026.7.1.tgz`
- remediated package tree: `sha512-OfBP5yJPR5gdGnQ1LPtvSvrn3WoRT7+vi3KMsNGyXgwM8wpzJ174dfnJTLRtn6zSX9Vrp84uDn6YffkaLyNOVg==`
- remediated package tree: `sha512-PzF1Lyw0yIo3mr7mNGql7azYoioDP+jQ47gERww6vgb9iyKnEWcscScsvv1IOt9yCp6BJTLxcRYYe7X0s95BnA==`
- `@openclaw/diagnostics-otel@2026.7.1`
- `sha512-XXhMifYWTgoR6yFN4T3JkHxdPvQCe8k1cNZjVIgXNmk1svCdBWuALfQQicmpemlmWwauIQuHYgBURY6k63e+rw==`
- `@openclaw/brave-plugin@2026.7.1`
Expand Down Expand Up @@ -98,9 +98,9 @@ whose amd64 config reports Node `22.23.1`.
- `brace-expansion@5.0.9` (OpenClaw locked-runtime remediation)
- `sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==`
- `https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz`
- `fast-uri@3.1.5` (OpenClaw and mcporter locked-runtime remediation)
- `sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==`
- `https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz`
- `fast-uri@3.1.6` (OpenClaw and mcporter locked-runtime remediation)
- `sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q==`
- `https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.6.tgz`
- `BSD-3-Clause`; no dependencies
- `undici@8.10.0` (OpenClaw core and Discord remediation)
- `sha512-HvltHd7avK13QIw/oLe4qoOLyoVSoafqJ2jYOrtMRBkbYT31eiBQ8O0ehRKZiEZCMEyLFQNIADpgCWC5fALvYQ==`
Expand All @@ -116,9 +116,9 @@ whose amd64 config reports Node `22.23.1`.
- `https://registry.npmjs.org/hono/-/hono-4.12.34.tgz`
- `MIT`; no dependencies; Node.js `>=16.9.0`
- `mcporter@0.7.3` committed runtime lock
- SHA-256: `17f2372a0a6949df928333a2f98862ae563013a7682b19a8ce63825c4696a064`
- SHA-256: `720c0e3ec2efcccd2c820ce2a39d733f7bd5bf9d3e6fb95310e7f6cd369db83c`

`fast-uri@3.1.5` has a valid npm registry signature and no registry attestation.
`fast-uri@3.1.6` has a valid npm registry signature and no registry attestation.
`undici@8.10.0` has a valid npm registry signature and SLSA provenance.
`ip-address@10.3.1` has two valid npm registry signatures and SLSA provenance.

Expand Down Expand Up @@ -188,7 +188,7 @@ The reviewed upstream OpenClaw shrinkwrap resolves `3.1.2`, and
`GHSA-v2hh-gcrm-f6hx` affects releases through `3.1.3`.
The initial remediation selected `3.1.4` for that advisory.
The high-severity `GHSA-7p8r-x3mc-p8w7` later affected that release.
Both committed runtime locks now select reviewed `3.1.5`.
All four audited production graphs now select reviewed `3.1.6`, the first release outside `GHSA-5jgf-p345-68v8`, `GHSA-f65p-4m7j-42xc`, `GHSA-fph4-wmhf-6fwf`, and `GHSA-jqff-g426-hqxp`.

The OpenClaw core package manifest and shrinkwrap directly pin `undici@8.5.0`.
The published `@openclaw/discord@2026.7.1` archive also pins that version in
Expand Down
Loading
Loading