Skip to content

fix(deps): resolve Snyk vulnerabilities (postcss, sharp, brace-expansion, body-parser, fast-uri, svgo) - #278

Merged
abhishek-ezhava-cstk merged 4 commits into
masterfrom
fix/snyk-2026-07
Aug 3, 2026
Merged

fix(deps): resolve Snyk vulnerabilities (postcss, sharp, brace-expansion, body-parser, fast-uri, svgo)#278
abhishek-ezhava-cstk merged 4 commits into
masterfrom
fix/snyk-2026-07

Conversation

@abhishek-ezhava-cstk

Copy link
Copy Markdown
Contributor

Summary

  • Bump overrides to patched versions: postcss@8.5.18 (directory traversal), sharp@0.35.3 (integer overflow x2, out-of-bounds read, heap buffer overflow), brace-expansion@5.0.8, body-parser@1.20.6, fast-uri@3.1.4, svgo@2.8.3. All patch/minor bumps, no API breakage.
  • Add .snyk ignore policy (90-day expiry, documented reasons) for the 4 issues with no safe fix available:
    • eslint@7.32.0 / js-yaml@3.15.0 — bundled inside gatsby@5.16.1's own dev-tooling; a real fix requires a major bump we don't control and risks breaking gatsby's internal webpack eslint-loader.
    • react-dev-utils@12.0.1 — Snyk itself reports no upgrade or patch available.
    • axe-core (MPL-2.0) and sharp-libvips-* (LGPL-3.0, introduced by the sharp bump) — license-policy flags, not security vulnerabilities.
  • Extend .talismanrc's existing filecontent-ignore pattern to package-lock.json (npm integrity hashes were flooding the pre-commit secret scan as false positives).
  • Bump version to 5.4.8.

snyk test now reports 0 vulnerable paths (down from 15+ issues).

Test plan

  • npm run build succeeds
  • Plugin unit tests pass (npx jest)
  • snyk test / snyk test --all-project --fail-on=all clean
  • Packed build (npm pack) installed into contentstack-gatsby-starter-app, verified end-to-end:
    • gatsby build succeeds (12/12 pages, real Contentstack content, sharp image processing confirmed via generated manifest icons)
    • gatsby develop starts cleanly
    • Playwright e2e suite: 28/28 passed

…fixable
Bump overrides to postcss@8.5.18 (directory traversal), sharp@0.35.x
(integer overflow x2, out-of-bounds read, heap buffer overflow),
brace-expansion@5.0.8 - all patch/minor bumps, no API breakage, verified
with plugin build + test suite. package-lock.json updated in place
(npm install, no full regeneration) to keep the diff to the ~53 packages
actually affected.
Record .snyk ignores (90-day expiry) for issues with no safe fix:
- eslint@7.32.0 / js-yaml@3.15.0: bundled inside gatsby@5.16.1's own
dev-tooling; fixing requires a major bump we don't control and risks
breaking gatsby's internal webpack eslint-loader.
- react-dev-utils@12.0.1: Snyk reports no upgrade or patch available.
- axe-core (MPL-2.0) and sharp-libvips-* (LGPL-3.0, introduced by the
sharp override): license-policy flags, not security vulns.
Extend .talismanrc's existing filecontent-ignore pattern to
package-lock.json: npm sha512 integrity hashes are cryptographic
checksums of public packages, not secrets, and were flooding the
pre-commit secret scan.
Bump version to 5.4.8.
These three regressed back to vulnerable nested versions after the
previous commit's in-place lockfile update preserved old resolutions.
All three have clean patch-level fixes, so pin them explicitly like the
rest of the overrides list instead of relying on incidental semver
resolution:
- body-parser 1.20.6 (resource allocation without limits)
- fast-uri ^3.1.4 (interpretation conflict)
- svgo 2.8.3 (incomplete disallowed-input list)
snyk test now reports zero vulnerable paths. Build + test suite verified.
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

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

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0010✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity00500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

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

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 365 days✅ Passed

✅ BUILD PASSED - All security checks passed

The .snyk file suppressed issues instead of fixing them and shouldn't
have been committed. Force real fixes via overrides on gatsby's nested
eslint (7.32.0 -> 9.26.0), js-yaml (3.15.0 -> ^4.2.0), and the
resulting @eslint/plugin-kit ReDoS pulled in by the eslint bump
(-> ^0.3.4). Verified with build + jest suite that gatsby's bundled
webpack/eslint-loader still works with eslint 9 forced underneath it.
react-dev-utils's critical command-injection (SNYK-JS-REACTDEVUTILS-17890708)
is left unresolved on purpose: Snyk reports no fixed or patchable version
exists (semver vulnerable: '*'), and it lives inside gatsby's own
peerDependency tree, not anything this plugin ships. The license-policy
flags on axe-core/sharp-libvips are not vulnerabilities and have no code
fix. Both are left visible in scans rather than hidden behind an ignore
file.
@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

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

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0110✅ Passed
🟠 High Severity0025✅ Passed
🟡 Medium Severity041500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

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

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 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: 1
  • High without fixes: 0
  • Medium without fixes: 41
  • Low without fixes: 0

✅ BUILD PASSED - All security checks passed

@snyk-io

snyk-ioBot commented Aug 3, 2026

Copy link
Copy Markdown

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

StatusScan Engine Critical High Medium LowTotal (0)
Open Source Security0000 0 issues
Licenses0000 0 issues
Code Security0000 0 issues

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

@github-actions

Copy link
Copy Markdown

🔒 Security Scan Results

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

Check TypeCount (with fixes)Without fixesThresholdResult
🔴 Critical Severity0110✅ Passed
🟠 High Severity1225✅ Passed
🟡 Medium Severity041500✅ Passed
🔵 Low Severity001000✅ Passed

⏱️ SLA Breach Summary

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

SeverityBreaches (with fixes)Breaches (no fixes)SLA Threshold (with/no fixes)Status
🔴 Critical0015 / 30 days✅ Passed
🟠 High0030 / 120 days✅ Passed
🟡 Medium0090 / 365 days✅ Passed
🔵 Low00180 / 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: 1
  • High without fixes: 2
  • Medium without fixes: 41
  • Low without fixes: 0

✅ BUILD PASSED - All security checks passed

@abhishek-ezhava-cstk
abhishek-ezhava-cstk merged commit 1fe61f3 into masterAug 3, 2026
8 checks passed
@abhishek-ezhava-cstk
abhishek-ezhava-cstk deleted the fix/snyk-2026-07 branch August 3, 2026 05:15
Sign up for freeto 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

@abhishek-ezhava-cstk@netrajpatel@cs-raj