fix(images): remove vulnerable node-tar copies#7332
Conversation
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds npm-bundled ChangesNode-tar security controls
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant DockerBuild
participant NpmTarPatcher
participant NodeTarImageScan
participant GitHubActions
participant ArtifactStore
DockerBuild->>NpmTarPatcher: Patch bundled npm tar
DockerBuild->>NodeTarImageScan: Scan completed filesystem
NodeTarImageScan-->>DockerBuild: Write read-only inventory
GitHubActions->>NodeTarImageScan: Scan production image
NodeTarImageScan-->>GitHubActions: Emit JSON inventory
GitHubActions->>ArtifactStore: Upload retained inventory
Possibly related issues
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Code Coverage OverviewLanguages: TypeScript TypeScript / code-coverage/pluginThe overall coverage in commit bc9f804 in the TypeScript / code-coverage/cliThe overall coverage in commit bc9f804 in the Show a code coverage summary of the most impacted files.
Updated |
PR Review Advisor — InformationalAdvisor assessment: Informational / high confidence Model lanes
Nemotron output stays in workflow artifacts and does not change the assessment above. E2E guidanceAdvisory only. E2E / PR Gate selects and runs jobs independently. Recommended E2E: 2 optional E2E recommendations
This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge. |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
scripts/patch-bundled-npm-tar.mts (1)
188-230: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick winAdd a timeout to
spawnSynccalls.
run()(used fornpm --version,npx --version, andtar --extract) has no timeout. A hang in any of these would block the Docker build layer indefinitely rather than failing fast.🛡️ Proposed fix
function run(command: string, args: readonly string[]): void { - const result = spawnSync(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }); + const result = spawnSync(command, args, { + encoding: "utf8", + stdio: ["ignore", "pipe", "pipe"], + timeout: 60_000, + }); if (result.error) throw result.error;🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/patch-bundled-npm-tar.mts` around lines 188 - 230, Update the run function’s spawnSync invocation to include a finite timeout option, ensuring npm, npx, and tar commands fail promptly if they hang while preserving the existing error and nonzero-status handling.scripts/checks/node-tar-image-scan.mts (1)
10-10: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicated minimum-safe-tar-version constant across two files.
MINIMUM_SAFE_NODE_TAR_VERSIONandMINIMUM_SAFE_TAR_VERSIONboth hardcode"7.5.19"independently. A future version-floor bump risks updating only one, letting the patch script and the scan gate silently disagree on what counts as "fixed."
scripts/checks/node-tar-image-scan.mts#L10-L10: importMINIMUM_SAFE_TAR_VERSIONfrom../patch-bundled-npm-tar.mts(or a shared constants module) instead of re-declaring it.scripts/patch-bundled-npm-tar.mts#L24-L28: keep this as the single canonical export that the scan script consumes.As per path instructions for
scripts/checks/**: "Derive inventories and limits from a canonical source where possible; flag duplicated lists that can silently drift."♻️ Proposed fix
--- a/scripts/checks/node-tar-image-scan.mts +++ b/scripts/checks/node-tar-image-scan.mts @@ +import { MINIMUM_SAFE_TAR_VERSION } from "../patch-bundled-npm-tar.mts"; + -export const MINIMUM_SAFE_NODE_TAR_VERSION = "7.5.19"; +export const MINIMUM_SAFE_NODE_TAR_VERSION = MINIMUM_SAFE_TAR_VERSION;🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/checks/node-tar-image-scan.mts` at line 10, The scan script’s minimum tar version duplicates the canonical value and can drift. In scripts/checks/node-tar-image-scan.mts:10, remove the local MINIMUM_SAFE_NODE_TAR_VERSION declaration and import/reuse MINIMUM_SAFE_TAR_VERSION from scripts/patch-bundled-npm-tar.mts; retain scripts/patch-bundled-npm-tar.mts:24-28 as the single canonical export, requiring no direct change there.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@test/node-tar-dockerfile-contract.test.ts`:
- Around line 50-53: Update the npm consumer detection in the contract test to
recognize npm ci/install commands on multiline continued RUN instructions, then
make the ordering assertion unconditional so the test fails when no valid
consumer is found or when it precedes patchRun. Preserve the existing patchRun
comparison while removing the conditional bypass around the assertion.
---
Nitpick comments:
In `@scripts/checks/node-tar-image-scan.mts`:
- Line 10: The scan script’s minimum tar version duplicates the canonical value
and can drift. In scripts/checks/node-tar-image-scan.mts:10, remove the local
MINIMUM_SAFE_NODE_TAR_VERSION declaration and import/reuse
MINIMUM_SAFE_TAR_VERSION from scripts/patch-bundled-npm-tar.mts; retain
scripts/patch-bundled-npm-tar.mts:24-28 as the single canonical export,
requiring no direct change there.
In `@scripts/patch-bundled-npm-tar.mts`:
- Around line 188-230: Update the run function’s spawnSync invocation to include
a finite timeout option, ensuring npm, npx, and tar commands fail promptly if
they hang while preserving the existing error and nonzero-status handling.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 64892c3b-c545-4adb-8e3c-eee15a14e55d
⛔ Files ignored due to path filters (1)
nemoclaw/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (18)
.github/workflows/base-image.yaml.github/workflows/sandbox-images-and-e2e.yamlDockerfileDockerfile.baseagents/hermes/Dockerfileagents/hermes/Dockerfile.baseagents/langchain-deepagents-code/Dockerfileagents/langchain-deepagents-code/Dockerfile.basenemoclaw/package.jsonscripts/checks/node-tar-image-scan.mtsscripts/patch-bundled-npm-tar.mtssrc/lib/sandbox-base-image/source-identity.test.tssrc/lib/sandbox-base-image/source-identity.tstest/e2e/support/sandbox-images-workflow-boundary.test.tstest/node-tar-dockerfile-contract.test.tstest/node-tar-image-scan.test.tstest/patch-bundled-npm-tar.test.tstools/e2e/sandbox-images-workflow-boundary.mts
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
test/node-tar-dockerfile-contract.test.ts (1)
19-22: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick winFail closed when the completed-stage marker is missing.
Returning the full Dockerfile when
FROM ${BASE_IMAGE}is absent silently disables stage isolation. A patch and scan in an earlier stage can satisfy the contract while the final stage remains unremediated. Throw or assert on a missing marker instead of returningsource.Proposed fix
- if (baseImageIndex < 0) return source; + if (baseImageIndex < 0) { + throw new Error(`Missing completed-stage marker: ${baseImageMarker}`); + }As per path instructions, tests must provide behavioral confidence rather than bypassing their claim.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test/node-tar-dockerfile-contract.test.ts` around lines 19 - 22, Update completedStage so it fails closed when the final "FROM ${BASE_IMAGE}" marker is absent: throw or assert instead of returning the full source. Preserve slicing from the last marker when present, ensuring the contract test cannot silently scan an earlier stage.Source: Path instructions
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@test/node-tar-dockerfile-contract.test.ts`:
- Around line 19-22: Update completedStage so it fails closed when the final
"FROM ${BASE_IMAGE}" marker is absent: throw or assert instead of returning the
full source. Preserve slicing from the last marker when present, ensuring the
contract test cannot silently scan an earlier stage.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 15e5710e-60aa-488c-a612-7e06b1a40b45
📒 Files selected for processing (3)
scripts/checks/node-tar-image-scan.mtsscripts/patch-bundled-npm-tar.mtstest/node-tar-dockerfile-contract.test.ts
🚧 Files skipped from review as they are similar to previous changes (2)
- scripts/checks/node-tar-image-scan.mts
- scripts/patch-bundled-npm-tar.mts
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
apurvvkumaria
left a comment
There was a problem hiding this comment.
Security review at 7e6714d: approved; no merge-blocking security finding.
I verified the complete diff and all six production/base Dockerfiles. NemoClaw pins its direct dependency to tar@7.5.20; npm 10 and npm 11 private copies are replaced from the committed registry URL and SHA-512 value before npm consumes package input; and every final filesystem is scanned after package mutations. The exact-head OpenClaw amd64/arm64 builds completed the embedded gate, with the amd64 log showing npm@10.9.7 bundled tar moving to 7.5.20. An independent exact pinned Node 24/npm 11.13 smoke changed tar 7.5.13 to 7.5.20 and kept npm, npx, pack, and install usable. I also ran 60 focused tests plus plugin type checking successfully. Existing CodeQL and CodeRabbit threads are resolved/outdated.
Fix forward; not merge gates for this CVE patch:
- P2 — alias-aware discovery: scripts/checks/node-tar-image-scan.mts searches only */node_modules/tar/package.json. npm aliases can install a package whose manifest name is tar under node_modules/, which the scan would omit if another fixed tar copy makes the inventory non-empty. No current lock uses npm:tar, so this is not a current-image bypass. Enumerate package manifests by identity and add an alias regression test.
- P2 — pre-merge evidence lane: exact-head self-hosted run 29858018474 executed the embedded image gate but did not execute the newly added isolated scan/upload steps, so it produced no node-tar inventory artifact. Those workflow changes need a branch workflow_dispatch run or wiring into the self-hosted PR lane to prove the retained-evidence path before merge. This does not invalidate remediation because the Docker build itself failed closed on the same completed filesystem.
- P2 — verify bytes before parsing during bootstrap: the patch path invokes npm pack through the currently affected npm/tar and compares the reported SRI afterward. A malicious registry response could therefore exercise the build-time DoS before being rejected. It cannot become an accepted or shipped artifact, and TLS plus the committed SRI make this an availability hardening item. Prefer a bounded raw download, verify SHA-512, then extract.
- P3 — scanner/evidence hardening: add a find timeout and manifest-size ceiling; run the isolated scan by immutable image ID, validate that the JSON image field matches it, and make rerun evidence unambiguous.
Separate pre-existing workflow-trust follow-up: credentialed workflow_dispatch paths should be main-only or controlled by a trusted default-branch controller, rather than allowing selected-ref workflow code to receive registry publication credentials.
Required CI is still pending and remains the merge gate; this approval does not waive it.
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
|
Exact-head E2E failure follow-up: the node-tar patch itself succeeded, but the forced OpenClaw base rebuild reached the fail-closed mcporter audit after GHSA-frvp-7c67-39w9 was published today. Commit be631a0 pins the fixed @hono/node-server@2.0.5 transitive artifact through the dedicated mcporter runtime lock. Evidence: canonical v1.19.14→v2.0.5 tag/release/ancestry audit includes fix cd076e117cfe4cb8d31f9eb11d2e8f38a6cb8faf; the retained getRequestListener contract is the only SDK server-side API involved; NemoClaw runs Node >=22.19; mcporter production imports the client transport; npm ci/audit/signature verification passed (0 advisories, 120 signatures, 12 attestations); focused tests passed 24/24; and Dockerfile.base rebuilt successfully through the completed-image node-tar scan. CI and exact-head credentialed E2E are being rerun on be631a0. |
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-7332.docs.buildwithfern.com/nemoclaw |
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
…codex/fix-node-tar-images
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Charan Jagwani <cjagwani@nvidia.com>
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
|
Heads-up: this change appears to break the The new Evidence
The old-base docker build fails at the tar scan: Observed run (E2E target Root causeThe Possible remediations (your call)
Happy to help validate whichever direction you prefer. |
<!-- markdownlint-disable MD041 --> ## Summary Add the canonical `v0.0.91` changelog entry that was missed before the release tag was cut. Correct the custom-image compatibility guidance because the tagged code still accepts the legacy inference route selector instead of removing it in v0.0.91. ## Changes - Add `docs/changelog/2026-07-22.mdx` with the release summary and detailed security, rebuild, Hermes, DGX Station, and historical-validation changes from the published v0.0.91 announcement. - Link shipped behavior to the most specific published OpenClaw and Hermes documentation routes. - Correct the v0.0.90 changelog and command reference so they match the compatibility fallback present in the tagged v0.0.91 code without inventing a new removal version. - Keep the immutable v0.0.91 release tag unchanged; this is the documented post-release recovery path. Source summary: - [#7332](#7332), [#7289](#7289), and [#7294](#7294) -> `docs/changelog/2026-07-22.mdx`: Summarize completed-image `node-tar` remediation and current and historical container verification. - [#7213](#7213), [#7363](#7363), [#7366](#7366), and [#7369](#7369) -> `docs/changelog/2026-07-22.mdx`: Summarize trusted base preparation, backup reuse, deletion convergence, and rebuild confidence. - [#7212](#7212) -> `docs/changelog/2026-07-22.mdx`: Summarize the Hermes API bearer-token lifecycle and supported retrieval command. - [#7327](#7327) and [#7328](#7328) -> `docs/changelog/2026-07-22.mdx`: Summarize qualified DGX Station guidance and reproducible coding-agent installation instructions. - [#7355](#7355), [#7360](#7360), [#7362](#7362), and [#7364](#7364) -> `docs/changelog/2026-07-22.mdx`: Summarize restored historical OpenClaw upgrade and Hermes rebuild validation. - [#7189](#7189) -> `docs/changelog/2026-07-20.mdx`, `docs/reference/commands.mdx`: Correct its forward-looking removal deadline after v0.0.91 shipped with the documented legacy fallback still present. - [#7282](#7282), [#7306](#7306), and [#7341](#7341) need no additional user-guide update because they already update their owned contributor or user-facing text directly. ## Type of Change - [ ] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [x] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [ ] Tests added or updated for changed behavior - [x] Existing tests cover changed behavior — justification: `test/changelog-docs.test.ts` validates dated changelog structure, SPDX syntax, version ordering, and published routes. - [ ] Tests not applicable — justification: - [x] Docs updated for user-facing behavior changes - [ ] Docs not applicable — justification: - [ ] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: Not applicable; this documentation-only PR does not change Station preparation or runtime behavior. - Station profile/scenario: Not applicable. - Result: Not applicable. - Supporting evidence: Not applicable. ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/changelog-docs.test.ts` (6 passed). - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — not run; this is a focused documentation-only change. - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) — completed with 0 errors and 2 existing site-wide warnings. - [x] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) — the native changelog entry uses the required parser-safe MDX SPDX comment and intentionally has no frontmatter. --- Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Updated v0.0.91 guidance for custom Dockerfiles, including continued legacy compatibility and recommended migration to `NEMOCLAW_INFERENCE_PROVIDER_ID`. * Added release notes covering image security scanning, safer rebuild behavior, token management, DGX Station guidance, and deterministic release validation. * Clarified that existing custom images may continue using the legacy selector temporarily, with fallback removal planned for a future release. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Apurv Kumaria <akumaria@nvidia.com> Co-authored-by: cjagwani <cjagwani@nvidia.com>
<!-- markdownlint-disable MD041 --> ## Summary A normal `0002` checkout can stage executable Docker payloads as `0775`, so the exact metadata gate added by #7486 aborts a sandbox replacement build. This change clears group and other write bits while preserving owner write and executable intent, so permissive and restrictive source modes both produce canonical Docker payload modes without weakening the gate. ## Changes - Clear group and other write bits in `normalizeReadModesForDockerCopy()` before adding the read, traverse, and executable permissions required by Docker. - Cover optimized and legacy staging with `0775` directory and executable fixtures plus a `0664` non-executable fixture. The tests assert exact staged modes of `0755` and `0644`. - Retain coverage that normalizes restrictive `0700` directories and executables plus `0600` ordinary files. - Confirm the regression history: #3664 introduced read-mode normalization, #7072 applied it to scripts with restrictive-mode coverage, #7332 added `patch-bundled-npm-tar.mts`, and #7486 made its preserved `0775` mode fail the exact `0755` assertion. - Validate the fix on Brev instance `nc-july26` from base SHA `3b2f6d557`. A transactional rebuild with `0775` and `0664` source inputs completed the strict payload metadata stage, replacement creation, state restore, policy restore, and deployment health checks. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Quality Gates - [x] Tests added or updated for changed behavior - [ ] Existing tests cover changed behavior — justification: - [ ] Tests not applicable — justification: - [ ] Docs updated for user-facing behavior changes - [x] Docs not applicable — justification: The fix restores the existing staged-payload permission contract and does not change commands, configuration, or supported workflows. - [x] Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging) - [ ] Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: - [ ] Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue: ## Documentation Writer Review - [x] Documentation writer subagent reviewed the completed changes - Result: `no-docs-needed` - Evidence: No documentation files changed. The fix restores canonical staged modes without changing commands, configuration, or supported workflows. The reviewer found no actionable wording issues. - Agent: Codex Desktop <!-- docs-review-head-sha: 14967c5 --> <!-- docs-review-agents-blob-sha: 9c9b36d --> ## DGX Station Hardware Evidence - [ ] Tested on DGX Station - Tested commit: - Station profile/scenario: - Result: - Supporting evidence: ## Verification - [x] PR description includes a `Signed-off-by:` line and every commit appears as `Verified` in GitHub - [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or `npm run check:diff` passed when hooks were skipped or unavailable - [x] Targeted behavior tests pass for the current change set, or tests are marked not applicable above — `npx vitest run test/sandbox-build-context.test.ts src/lib/onboard/build-context-stage.test.ts src/lib/actions/sandbox/rebuild-managed-image-preparation.test.ts` (22/22 passed); `npm run typecheck:cli` passed; Brev `nc-july26` rebuild passed the strict Docker payload metadata stage and completed successfully. - [ ] Applicable broad gate passed — `npm test` for broad runtime/test-harness changes; `npm run check` for repo-wide validation/coverage changes — command/result: - [x] Quality Gates section completed with required justifications or waivers - [x] No secrets, API keys, or credentials committed - [ ] `npm run docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) --- Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com> Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Summary
Remediate CVE-2026-59873 / GHSA-23hp-3jrh-7fpw across the completed Node-based sandbox images targeted for v0.0.91. Before this change, NemoClaw's plugin lockfile and npm's private bundles shipped affected node-tar releases; after it, every discovered physical installation must resolve to tar 7.5.19 or newer before an image can be published.
Changes
tar@7.5.20.tar@7.5.20archive.7.5.19.Type of Change
Quality Gates
DGX Station Hardware Evidence
Verification
Signed-off-by:line and every commit appears asVerifiedin GitHubpre-commit,commit-msg, andpre-pushhooks passed, ornpm run check:diffpassed when hooks were skipped or unavailablenpm run docsbuilds without warnings (doc changes only)Signed-off-by: Prekshi Vyas prekshiv@nvidia.com
Signed-off-by: Senthil Ravichandran senthilr@nvidia.com
Summary by CodeRabbit
tarto a safer release and added automated in-image remediation.