fix(deps): resolve critical proxy-addr, high adm-zip, and fast-uri Snyk findings (+Claude) - #234
Merged
Merged
Conversation
…yk findings - Bump adm-zip 0.6.0 -> 0.6.1 (Snyk high: symlink attack, decompression amplification, excessive memory allocation) - Add proxy-addr override ^2.0.8 (Snyk critical: user impersonation via express's still-pinned proxy-addr ~2.0.7; express itself has not yet bumped its declared range) - Raise fast-uri override floor ^3.1.7 -> ^3.1.8 (Snyk medium: improper case-sensitivity handling; the existing override's floor predated the fix) - Retire obsolete lodash, form-data, and js-yaml overrides: each now resolves at or above its former pinned floor without the override (verified via npm ls ... and a clean Snyk re-scan before/after removal) Remaining Snyk findings (csv-parse via cli-utilities > tty-table > csv, and deepmerge with no fix published upstream) are parked in needs-human-review — see PR description. Co-authored-by: Claude <noreply@anthropic.com>
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
siddharth-kulkarni-cs
approved these changes
Sep 21, 2026
🔒 Security Scan Results
⏱️ SLA Breach Summary
ℹ️ Vulnerabilities Without Available Fixes (Informational Only)The following vulnerabilities were detected but do not have fixes available (no upgrade or patch). These are excluded from failure thresholds:
✅ BUILD PASSED - All security checks passed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Snyk dependency remediation — launch-cli — 21-Sep-2026
Automated dependency-vulnerability remediation pass (snyk-fix). Single surface in scope: Node.js (
package.json/package-lock.json). No Go surface, no Dockerfile in this repo.Summary table
^0.6.0→^0.6.1); symlink attack, decompression amplification, excessive memory allocation. VerifiedwriteZipPromiseruntime behavior unchanged between versions (no application-code change needed on this branch —developmentalready refactored the call site to try/catch).express@4.22.2's ownpackage.jsonstill declaresproxy-addr: ~2.0.7; no express release yet raises this. Forced via a newoverridesentry,^2.0.8.fast-urioverride floor (^3.1.7) predated this fix; raised to^3.1.8.Overrides retired (step 2.5)
Tested each for obsolescence by removing it, running
npm install, and confirming (a) the dependency still resolves at/above its former floor and (b) a fullsnyk test --all-projectsre-scan stays clean at that resolution:lodash(^4.18.1) — redundant with the directdependenciesentry of the same range; resolves to4.18.1naturally without the override.form-data(4.0.6) — same reasoning; resolves to4.0.6naturally via the direct dependency's exact pin.js-yaml(^4.3.1) — the main resolution path already reaches4.3.2on its own. Removing it does letnyc's own@istanbuljs/load-nyc-configdependency resolve a nestedjs-yaml@3.15.2(well past the known js-yaml 3.x CVEs, all fixed by 3.13.1) instead of being forced to the deduped4.3.2— confirmed via Snyk re-scan that this introduces no new finding.All three were pre-existing (no
snyk-fixbreadcrumb, predate this convention) — removed with no tombstone comment; this paragraph is the rationale record.Needs human review (not yet resolved)
@contentstack/cli-utilities > tty-table@4.2.3 > csv@5.5.3 > csv-parse@4.16.3csv-parse@7.0.2) but only as a major-version jump (4.x → 7.x) forced via an override on a doubly-transitive dependency.csv@5.5.3(tty-table's own dependency) declarescsv-parse: ^4.16.3and very likely relies on the v4 callback-based API; csv-parse's API shape changed materially across majors. This package's actual usage insidetty-table/csvisn't reachable from launch-cli's own code (launch-cli never importstty-tabledirectly — it's several levels down via@contentstack/cli-utilities), so there's no way to validate the override doesn't silently breakcsv's internal parsing. Forcing it is a behavior-changing guess, not a mechanical fix.@rollup/plugin-node-resolve@16.0.3 > deepmerge@4.3.1(also via jest's own dependency tree)fixedIn: []— genuinely no version anywhere resolves this advisory yet. Not upgradable, not patchable, no override target exists that would help.Self code review (step 7.5)
One round. Reviewed the complete diff (
package.json,package-lock.json) plus the lockfile's dependency-tree changes line by line. Zero High, zero Medium findings.nyc's newly-surfaced nestedjs-yaml@3.15.2+ its own deps (argparse,sprintf-js,esprima) as a direct, expected consequence of retiring the redundantjs-yamloverride.^floats throughout; no needlessly exact pins introduced)..github/workflowssync needed — this run touched no Node/Go runtime version, only npm package versions.development's existingtry/catcharoundzip.writeZipPromise()already avoids theadm-zip@0.6.xbundled-.d.tstype mismatch (Promise<void>vs.@types/adm-zip'sPromise<boolean>) that amain-based attempt at this same fix would have needed to work around.Validation
npm install: clean (no@contentstack/*scope touched by any version change in this PR).npm run build: passes.npm test(mocha + jest, this repo's own script): 137/137 jest tests pass; mocha exits 0 with the same 74 passing / 18 pre-existing pending items as an unmodified baseline (those 18 are gated on liveORG/PROJECT/ENVIRONMENTcredentials via.envand are unrelated to this diff — verified identical on unmodifieddevelopment).snyk test --all-projects: 1 project scanned (singlepackage.json/package-lock.json, matches manifest — no workspaces monorepo here). Before this PR: 4 findings (csv-parse, deepmerge, fast-uri, proxy-addr). After: 2 findings (csv-parse, deepmerge — both needs-human-review above).npm audit: before 6 (1 high, 5 moderate) → after 5 (0 high, 5 moderate; remaining 5 are the same csv-parse/tty-table/csv chain surfaced a second way through npm's own advisory graph, not a separate issue).snyk:lic:*license findings at any severity.Note on scope
This PR is scoped to what a fresh Snyk scan on
development's current head still shows (proxy-addr,fast-uri's stale floor,adm-zip's patch bump, plus the two needs-human-review items).developmentalready carries substantial prior dependency remediation from earlier runs (adm-zip 0.5→0.6, qs, most of fast-uri, serialize-javascript, diff, brace-expansion, istanbul-lib-processinfo, uuid) — this PR only adds what that state was still missing, rather than re-doing already-merged work.🤖 Generated with Claude Code