Skip to content

SYN-646: Clear high-severity vuln findings via dependency upgrades - #313

Merged
KARSE22 merged 4 commits into
mainfrom
chore/SYN-646/high-vuln-upgrades
Sep 2, 2026
Merged

SYN-646: Clear high-severity vuln findings via dependency upgrades#313
KARSE22 merged 4 commits into
mainfrom
chore/SYN-646/high-vuln-upgrades

Conversation

@KARSE22

@KARSE22 KARSE22 commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

What problem are you trying to solve?

  • SYN-646: npm audit found 5 high, 3 moderate, and 1 low severity findings across axios, form-data, js-yaml, brace-expansion, browserslist, json-2-csv, @babel/core, and uuid. A few of the ticket's original target versions were already out of date.

How did you solve this problem?

  • Bumped axios, form-data, js-yaml, brace-expansion, browserslist, json-2-csv, and @babel/core via npm update. The fixed versions were already inside package.json's existing semver ranges, so this is lockfile-only with no range edits.
  • uuid (transitive, via nyc's istanbul-lib-processinfo) took two tries. First I forced it to a newer major through an override, but the flagged CVE only affects v3/v5/v6 with a custom buf argument, and istanbul-lib-processinfo only calls uuidv4() with none. That code path was never reachable, so the override was pointless. The real fix: istanbul-lib-processinfo@3.0.1, already in nyc's declared range, dropped the uuid dependency entirely, so bumping to it clears the finding with no override.
  • Bumped form-data's declared range in package.json from ^4.0.5 to ^4.0.6 too. The lockfile bump alone only protects this repo's own installs. Since the published package ships no lockfile, a fresh npm install lob would still resolve the vulnerable floor otherwise. axios's range already covered its fix, form-data's didn't.

Important notes

  • npm audit: 9 findings before, 0 after.
  • No major-version bumps on direct dependencies, no overrides in package.json, and no API changes expected.

Test plan

  1. npm audit: 0 findings.
  2. npm test: 97 unit tests pass, coverage unchanged from main.
  3. npm run test:integration with TEST_API_KEY and LIVE_API_KEY: 24 tests pass against the live API, covering addresses, postcards, verifications, autocompletions, campaigns, and zip lookups.
  4. npm run lint: the 4 errors in test/bankAccounts.js are pre-existing on main, unrelated to this change.
  5. Reviewed the package-lock.json diff line by line for downgrades or out-of-range transitive changes and found none.

Resolves all 5 high, 3 moderate, and 1 low npm audit findings (9 total,
0 remaining). Most fixes are lockfile-only version bumps within already-
declared caret ranges (axios, form-data, js-yaml, brace-expansion,
browserslist, json-2-csv, @babel/core) — no package.json range changes
needed, and each bump goes as high as the safe patched version allows.

The one exception is uuid (transitive via nyc's istanbul-lib-processinfo,
which pins ^8.3.2): fixing it requires a semver-major override to
^11.1.1. Verified via full test suite + coverage report that nyc's
coverage output is unaffected before keeping this override.

lob-node-admin has the same findings and needs an identical set of
bumps in a follow-up PR on that repo.
The lockfile-only bump already resolved form-data to 4.0.6 for this
repo's own installs, but package.json's dependency range was still
^4.0.5. Since the published lob package ships no lockfile, a fresh
`npm install lob` would resolve form-data against that declared range
and could still land on the vulnerable 4.0.5 (GHSA-hmw2-7cc7-3qxx,
CRLF injection). axios's ^1.16.1 range already covers its fix; this
closes the same gap for form-data so the fix reaches consumers of the
published package, not just this repo's CI.

Caught by adversarial review before merge.
The previous approach forced uuid to ^11.1.1 via an override on
istanbul-lib-processinfo, a semver-major jump outside nyc's own
declared range (^8.3.2). On closer look that override was fixing a
non-issue: the flagged CVE (GHSA-w5hq-g745-h8pq) only affects uuid's
v3/v5/v6 functions when a caller passes a custom `buf` argument, and
istanbul-lib-processinfo only ever calls uuidv4() with no buf — the
vulnerable code path was never reachable through this dependency.

The actual fix: istanbul-lib-processinfo@3.0.1 (nyc already declares
^3.0.0, so this is in range) dropped the uuid dependency entirely.
Bumping to it via `npm update istanbul-lib-processinfo` removes uuid
from the tree altogether, no override needed, no semver violation.
@KARSE22
KARSE22 marked this pull request as ready for review September 1, 2026 21:15
@KARSE22
KARSE22 merged commit e87c153 into main Sep 2, 2026
6 checks passed
@KARSE22
KARSE22 deleted the chore/SYN-646/high-vuln-upgrades branch September 2, 2026 17:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants