fix(security): force serverless's tar to >=7.5.8 (CVE-2026-26960)#739
Conversation
serverless@3.40.0 pulled tar@6.2.1, source of 7 high-severity node-tar extraction advisories fixed only on the 7.5.8+ line. Scoped override bumps it to tar@7.5.19. tar is a devDependency only, so consumers were never exposed. Fixes #188
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis change adds a nested override entry in package.json's overrides section, pinning the tar dependency used by the serverless package to version ^7.5.8. ChangesDependency Override Update
Estimated code review effort: 1 (Trivial) | ~2 minutes Related issues: None directly resolved by this change; linked issue Suggested labels: dependencies Suggested reviewers: None 🐰 A tiny tweak in package.json's core, 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
…=7.5.16 The tar flagged by Dependabot alert 250 (CVE-2026-53655 / GHSA-vmf3-w455-68vh, tar <= 7.5.15) is bundled inside the npm package, reached via semantic-release -> @semantic-release/npm -> npm. npm overrides cannot rewrite bundled dependencies, so the scoped override from #739 cannot reach it. semantic-release is unused: no .releaserc, no release key, not referenced in any workflow or npm script. Releases are tag-driven via release.yml. Removing it drops npm and its bundled tar (-399 packages). Also raises #739's override floor from ^7.5.8 to ^7.5.16, since ^7.5.8 permits 7.5.15 -- the version this advisory affects. Resolves to tar@7.5.19 either way. Single tar@7.5.19 remains; no tar advisories. build, lint and 362 tests pass. Refs: GHSA-vmf3-w455-68vh
fix(security): force
serverless'starto>=7.5.8(Fixes #188)Summary
Adds a scoped
overridesentry that bumps thetarpulled in by theserverlessdevDependency from the vulnerable6.2.1to7.5.19. This clears #188 and the other sixtar < 7.5.8alerts in one change.The alert
Dependabot #188 — Arbitrary file read/write via hardlink target escape through a symlink chain in node-tar extraction (CVE-2026-26960 / GHSA-83g3-92jg-28cx, High 7.1).
tar.extract()with default options lets an attacker-controlled archive create a hardlink inside the extraction directory that resolves to a file outside the extraction root, giving arbitrary read/write as the extracting user. Affected:tar < 7.5.8; patched:7.5.8(all6.xare affected — the fix is only on the7.xline).The alert is tagged Development dependency and lists six sibling
taradvisories; Dependabot notes that a single bump fixes 7 alerts total.Why this is the right fix
The vulnerable copy is dev-only and comes from exactly one place:
taris not in the production dependency tree (npm ls tar --omit=dev→ empty), so people who install the plugin were never exposed. The exposure is limited to this repo's own dev/CI environment.7.5.8+only, so the patch requires movingserverless'starfrom6.xto7.x. A scoped override (overrides.serverless.tar) does this without globally remapping everytarin the tree.Result
tar@6.2.1is gone;serverlessnow resolvestar@7.5.19.npm run build,npm run lint(0 errors), andnpm run test(362 passing) are all green. The unit tests load the Serverless framework, so they exerciseserverless@3+tar@7compatibility — the major bump does not break it.To apply
Notes / follow-ups
serverless+tar@7combination is only used in this repo's dev/CI. The plugin's tests don't exercise serverless's archive-extraction path (serverless install), so if anyone relies on that locally a quick smoke test is worthwhile — blast radius is limited to the dev environment regardless.tar@6.2.1resolved, audit surfaces a distinct moderate advisory (GHSA-vmf3-w455-68vh,tar <= 7.5.15) on thetar@7.5.15bundled inside thenpmpackage (pulled bysemantic-release). That's a different alert, not CreateFunction Permission #188, and because it's bundled insidenpmthe fix is to bump thenpm/semantic-releasedevDependency line rather than ataroverride. Tracked separately.Summary by CodeRabbit