GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||
GeezerVison is showing github.com — vlt hosted and vendored `vex` attests not_affected while a bundled copy of the same name@version in node_modules/.vlt stays unpatched (the #325 fix covers npm locks only) · Issue #471 · SocketDev/socket-patch Closed Labels agent:triagedbugSomething isn't workingSomething isn't workingbughuntFound by a scheduled package-manager bug-hunt agentFound by a scheduled package-manager bug-hunt agentpm:vltvltvltpriority:p1 Description[agent] Found by the scheduled vlt bug-hunt routine (ledger #307). SummaryIn a vlt project, the patched For npm this exact case was fixed in #337 (#325). The hosted rewriter warns ImpactThe VEX document certifies a vulnerability as mitigated while the build ships and runs unpatched bytes of the vulnerable version (whatever code ReproMock registry and patch server: the mock from the ledger's probe workflow ( export SOCKET_NPM_REGISTRY=http://127.0.0.1:18555 SOCKET_API_URL=http://127.0.0.1:18556 \ SOCKET_PATCH_SERVER_URL=http://127.0.0.1:18556 SOCKET_ORG_SLUG=test-org SOCKET_API_TOKEN=fake mkdir proj && cd proj echo '{"name":"app","version":"1.0.0","dependencies":{"left-pad":"1.3.0","bundler":"1.0.0"}}' > package.json echo '{"config":{"registries":{"npm":"http://127.0.0.1:18555/"}}}' > vlt.json vlt install socket-patch scan --yes --json # or --mode vendored rm -rf node_modules && vlt ci node -p "require('left-pad')" # patched node -p "require('bundler')" # pristine <- bundled copy, unpatched cat node_modules/.vlt/[email protected]/node_modules/bundler/node_modules/left-pad/index.js # 'pristine' socket-patch vex --output vex.json # rc 0, no warning # statement: not_affected / inline_mitigations_already_exist, subcomponent pkg:npm/[email protected] The lock after Same project with npm ( Related symptom: if the patched package is present only as a bundled copy ( Expected vs actual
OS × vlt version (main
|
| OS | vlt 1.0.10 | vlt 1.2.0 | vlt 1.3.3 |
|---|---|---|---|
| Linux (ubuntu-latest + sandbox) | repro (hosted + vendored) | repro (hosted + vendored) | repro (hosted + vendored; sandbox 3/3 runs) |
| macOS (macos-latest) | repro (hosted + vendored) | repro (hosted + vendored) | repro (hosted + vendored) |
| Windows (windows-latest) | repro (hosted + vendored) | repro (hosted + vendored) | repro (hosted + vendored) |
All 18 cells print RESULT top=patched bundled=pristine and STATEMENT not_affected inline_mitigations_already_exist pkg:npm/[email protected]. Probe run: https://github.com/SocketDev/socket-patch/actions/runs/36871535059
First bad: not a regression. It has been present since vlt hosted/vendored + VEX support; release 4.0.0 predates vlt support. #337 fixed npm only.
crates/socket-patch-core/src/vex/discover/vlt.rs:93 (extract): attests from lock nodes only, with no bundled-copy contest like vex/discover/npm.rs:95. Since the vlt lock omits bundled copies, the contest has to come from the installed store (any node_modules/.vlt/*/node_modules/<parent>/node_modules/<name> whose package.json is the ref's name@version) or from each lock node's manifest bundleDependencies.crates/socket-patch-core/src/patch/redirect/vlt.rs and vendor/vlt_lock.rs:735: vendored only refuses when the target itself declares bundleDependencies (vendor_bundled_deps_unsupported). It doesn't check whether some other package bundles the target. Hosted has no counterpart of redirect_npm_bundled_instance_skipped (patch/redirect/mod.rs:904).[agent] Triage: priority:p1 (vlt, npm-family). Not a duplicate. No open or merged PR covers it.
Shares root cause with #469: the bundled-copy handling from #337 (#325) exists only on the npm-lock paths (vex/discover/npm.rs, redirect_npm_bundled_instance_skipped, vendor_bundled_instance_skipped). The vlt and Bun rewriters and their VEX discovery have no bundled-copy skip or contest, so a bundled name@version stays unpatched while scan succeeds and vex attests not_affected. Bun records the bundled copy in bun.lock as {bundled: true} and the rewriter ignores the flag. vlt's lock doesn't record it at all, so the contest has to come from the installed store or the parent's bundleDependencies. Will be fixed together.
Generated by Claude Code
[agent] Claiming this issue (with #469; shared root cause: bundled-copy skip/contest from #337 exists only for npm locks, not Bun or vlt). Branch: agent/fix-bundled-copy-bun-vlt. Claim-ID: 2026-10-01T14:20:51Z-cf03cb
Generated by Claude Code