Skip to content

security inventory: OS and npm dependency acquisition remain network-bound #8

Open

Description

@Riverbraid

Status

PARTIALLY_REMEDIATED / NETWORK_BOUND_DEPENDENCY_ACQUISITION_REMAINS

Original finding

The Evaluation Kit previously executed configured verifier commands through unrestricted shell dispatch and installed npm dependencies with lifecycle-script exposure. Its container also acquires operating-system packages through apt-get.

Completed remediation in draft PR #13

Current exact draft head:

868341e2a26ae1ac912be170a2930034b06623ee

Implemented controls:

  • verifier execution is constrained by the single sourced command-policy.sh allowlist;
  • unsupported commands are tested through tests/command-policy-negative.sh;
  • CI requires nonzero denial, the fail-closed reason, and denied-command identity;
  • npm package lifecycle scripts are denied with --ignore-scripts;
  • GitHub Actions uses ubuntu-24.04 and an exact checkout action commit;
  • the Docker base is bound by tag and digest:
node:20.11.0-bookworm-slim@sha256:ecc9a2581f8588014a49a523a9ed146d27963f6d988d11bd16bbdcb3598f5f98
  • CI fails closed unless the observed tag digest, environment-lock digest, and Dockerfile digest match;
  • the public README and claim-ceiling.json preserve the remaining network and claim boundaries.

Exact-head execution evidence

GitHub Actions run 30286309516, job 90044856022, completed successfully for the exact draft head above.

Observed successful steps include:

  • base-image identity observation;
  • environment-lock and Dockerfile identity matching;
  • required-file and registry validation;
  • unsupported-command fail-closed testing;
  • digest-pinned Docker build;
  • full Evaluation Kit execution;
  • verification success summary.

The bounded result is:

BASE_IMAGE_IDENTITY_LOCK_MATCH
ALLOWLIST_NEGATIVE_TEST_PASS
NPM_LIFECYCLE_SCRIPTS_DENIED
REPRODUCTION_MATCH

Remaining issue

Dependency acquisition still uses the network in two places:

  1. the Docker build performs apt-get update and installs git, jq, and ca-certificates from configured Debian package repositories;
  2. repository npm dependencies are acquired from the configured npm registry during evaluation.

The current profile therefore does not support claims of:

  • offline reproduction;
  • hermetic operating-system package resolution;
  • hermetic npm dependency resolution;
  • vendored dependency completeness;
  • fully preserved package-repository state;
  • full supply-chain isolation.

Future closure paths

Close this remaining inventory item only through one of:

  1. an adopted offline or frozen dependency profile with exact OS-package and npm-package identities, preserved acquisition sources, and successful execution evidence; or
  2. an explicit authority disposition accepting network-bound acquisition for the bounded profile while preserving the non-hermetic claim ceiling, review triggers, and acquisition risks.

Boundary

This issue does not claim compromise, production readiness, complete security hardening, external audit, independent reproduction, complete supply-chain isolation, or absence of defects.

It does not authorize registry pin changes, releases, tags, or broader F0–F4 claims.

Activity

  1. changed the title [-]security inventory: bound verifier command and dependency execution surfaces[/-] [+]security inventory: verifier command dispatch patch remains execution-unverified[/+] on Jun 3, 2026
  2. Riverbraid commented on Jul 27, 2026

    @Riverbraid
    OwnerAuthor

    Draft PR #13 adds a machine-readable claim-ceiling.json and updates the public README so this command-dispatch state remains visibly PATCHED_UNVERIFIED rather than being implied complete.

    PR #13 does not change dispatch logic and does not close this issue. The existing required execution evidence—successful bounded execution, fail-closed denial of an unlisted command, and a lifecycle-script decision—remains required.

  3. Riverbraid commented on Jul 27, 2026

    @Riverbraid
    OwnerAuthor

    PR #13 now implements the previously missing negative allowlist test without mutating the pinned registry:

    • production execution and testing source the same command-policy.sh;
    • tests/command-policy-negative.sh submits an unsupported command;
    • the test requires nonzero return, the exact fail-closed reason, and preservation of the denied command identity;
    • the GitHub Actions workflow requires ALLOWLIST_NEGATIVE_TEST_PASS before Docker build and full Evaluation Kit execution.

    Current validation target: head 41920ad6dd6302129ea4fa31d482eb2c176daca8.

    This addresses the negative-test implementation requirement. The issue remains open pending the exact-head workflow result and the separate disposition on package-manager lifecycle-script/dependency-install behavior.

  4. changed the title [-]security inventory: verifier command dispatch patch remains execution-unverified[/-] [+]security inventory: dependency acquisition remains network-bound[/+] on Jul 27, 2026
  5. changed the title [-]security inventory: dependency acquisition remains network-bound[/-] [+]security inventory: OS and npm dependency acquisition remain network-bound[/+] on Jul 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions