Skip to content

fix(deps): resolve high-severity browserslist DoS/prototype-write advisories (+Claude) - #228

Merged
dhruv-parekh-cs merged 1 commit into
developmentfrom
CL-snyk-fixes/02-Sep-2026
Sep 2, 2026
Merged

fix(deps): resolve high-severity browserslist DoS/prototype-write advisories (+Claude)#228
dhruv-parekh-cs merged 1 commit into
developmentfrom
CL-snyk-fixes/02-Sep-2026

Conversation

@dhruv-parekh-cs

Copy link
Copy Markdown

Summary

Automated, scheduled Snyk/dependency-vulnerability remediation pass (run date 02-Sep-2026). Node.js surface only — no go.mod, no Dockerfile in this repo.

Issue Severity Package Ecosystem Before → After Fixable Rationale
GHSA-c83g-rgw3-j3cx (unbounded memory growth / OOM) High browserslist (transitive) Node 4.28.6 → 4.28.8 Yes npm audit fix (non-force) re-resolved within existing semver ranges; not a direct dependency, no package.json change needed
GHSA-73wf-gq98-2v4g (prototype write / crash) High browserslist (transitive) Node 4.28.6 → 4.28.8 Yes Same fix as above (same package, same audit-fix pass)

Ecosystem-native audit pass (step 1.5)

npm audit before → after: 1 high-severity finding → 0.

npm audit fix (no --force) resolved both browserslist advisories by re-resolving transitive dependencies (browserslist, caniuse-lite, electron-to-chromium, node-releases, update-browserslist-db, baseline-browser-mapping) to newer patch releases already permitted by the existing dependency tree's semver ranges. serialize-javascript (7.1.0 → 7.1.1) and tmp also picked up lockfile metadata/patch updates from the same pass, both still within their existing package.json overrides ranges (^7.1.0, ^0.2.4) — no override was widened.

Nothing was left for Snyk to resolve from this pass; the only Snyk-level finding remaining (adm-zip, below) is unrelated to npm audit's output.

No workflow files required syncing — this run made no engines/toolchain/Node-version change.

Self code review (step 7.5)

2 rounds. 0 High, 0 Medium, 0 Low findings.

Diff scope is package-lock.json only — no package.json change, no application code touched. Verified: all version bumps are patch-level, dev-scoped build tooling (the browserslist/caniuse-lite family), no new packages added or removed beyond the version bumps themselves, no override widened or narrowed, no cross-surface (Dockerfile/CI) drift since no toolchain version moved. Review pass found no issues to fix.

Needs human review

  • SNYK-JS-ADMZIP-19276676 — Symlink Attack, High severity, adm-zip@0.6.0 (direct dependency). Snyk's advisory states explicitly: "There is no fixed version for adm-zip." Independently confirmed against the npm registry — 0.6.0 is the latest version published (npm view adm-zip version0.6.0). Not overridable: adm-zip is the direct dependency itself, not a transitive path pulled in by something else, so there is no parent package to target with an overrides entry. Exposure note: this repo's only use of adm-zip (src/adapters/file-upload.ts) is addLocalFolder/writeZipPromise (zip creation) — it never calls the vulnerable extraction paths (extractAllTo, extractAllToAsync, extractEntryTo) that the advisory describes. Recommend tracking upstream (https://github.com/cthackers/adm-zip/issues/574) for a fix release; no action possible from this repo today.

Overrides — step 2.5 retirement check

All 13 existing overrides entries in package.json (lodash, form-data, ajv incl. nested eslint/@eslint/eslintrc, qs, tmp, fast-uri, js-yaml, three minimatch@<ver>brace-expansion pins, serialize-javascript, diff, brace-expansion@1, istanbul-lib-processinfouuid) were tested for obsolescence by temporarily removing the overrides block entirely and reinstalling. Without the overrides, npm audit reported 14 vulnerabilities (8 low, 4 moderate, 2 high) — every override is still actively suppressing a real advisory. None retired this run.

Validation

  • npm install: clean, no peer-dependency warnings.
  • npm run build: passes.
  • npm test (mocha + jest): 137/137 jest tests pass, mocha suite exits 0 (pre-existing env-gated pending tests under Deployments/Open Command/Rollback — confirmed present and identically numbered on origin/development before this fix, unrelated to this change).
  • npm audit (final): 0 vulnerabilities.
  • snyk test --all-projects (final): 1 project scanned (@contentstack/cli-launch, matches this repo's single package.json), 1 remaining finding — the adm-zip issue listed above under needs human review, correctly still present since it has no fix.

🤖 Generated with automated Snyk dependency remediation (snyk-fix skill) — Claude Code

…isories (+Claude)

npm audit fix (non-force) re-resolved browserslist's transitive dependency
chain within existing semver ranges, fixing GHSA-c83g-rgw3-j3cx and
GHSA-73wf-gq98-2v4g. No package.json change needed — browserslist is not a
direct dependency.
Copilot AI lite review requested due to automatic review settings September 2, 2026 09:47
@dhruv-parekh-cs
dhruv-parekh-cs requested review from a team as code owners September 2, 2026 09:47

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review any files in this pull request.


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@snyk-io

snyk-io Bot commented Sep 2, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues
Code Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

🔒 Security Scan Results

ℹ️ Note: Only vulnerabilities with available fixes (upgrades or patches) are counted toward thresholds.

Check Type Count (with fixes) Without fixes Threshold Result
🔴 Critical Severity 0 0 10 ✅ Passed
🟠 High Severity 0 1 25 ✅ Passed
🟡 Medium Severity 0 0 500 ✅ Passed
🔵 Low Severity 0 0 1000 ✅ Passed

⏱️ SLA Breach Summary

✅ No SLA breaches detected. All vulnerabilities are within acceptable time thresholds.

Severity Breaches (with fixes) Breaches (no fixes) SLA Threshold (with/no fixes) Status
🔴 Critical 0 0 15 / 30 days ✅ Passed
🟠 High 0 0 30 / 120 days ✅ Passed
🟡 Medium 0 0 90 / 365 days ✅ Passed
🔵 Low 0 0 180 / 365 days ✅ Passed

ℹ️ 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:

  • Critical without fixes: 0
  • High without fixes: 1
  • Medium without fixes: 0
  • Low without fixes: 0

✅ BUILD PASSED - All security checks passed

@dhruv-parekh-cs
dhruv-parekh-cs merged commit 8496f57 into development Sep 2, 2026
8 checks passed
@dhruv-parekh-cs
dhruv-parekh-cs deleted the CL-snyk-fixes/02-Sep-2026 branch September 2, 2026 09:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants