Skip to content

docs(security): document unfixable braces exposure (Dependabot #200) - #114

Merged
marc-aurele-besner merged 1 commit into
mainfrom
fix/dependabot-200-braces
Oct 9, 2026
Merged

marc-aurele-besner merged 1 commit into
mainfrom
fix/dependabot-200-braces

Conversation

@marc-aurele-besner

Copy link
Copy Markdown
Owner

Summary

Addresses Dependabot alert #200 for braces (GHSA-vfj7-8cjw-p6xm / CVE-2026-93687) by recording the dependency chains, exposure analysis, and remediation options in SECURITY.md.

Why this is a docs-only change

  • No patched braces version exists. The latest npm release is 3.0.3 (published 2024-05-21), which is itself the vulnerable version. The upstream maintainer has publicly disputed the report and has not tagged a fix.
  • first_patched_version is null per the advisory, so a direct dep bump, transitive override, or Dependabot auto-PR cannot resolve the alert.
  • The only true remediation is migrating off Create React App (EOL — react-scripts is no longer maintained). That is a substantial project change outside the scope of a Dependabot fix.

Dependency chains (verified via npm ls braces --all)

react-scripts@5.0.1
├─ eslint-webpack-plugin@3.2.0 → micromatch@4.0.8 → braces@3.0.3
└─ tailwindcss@3.4.19 → chokidar@3.6.0 → braces@3.0.3

Both chains resolve through react-scripts. micromatch@4.0.8 (latest) still hard-depends on braces: ^3.0.3, so chain 1 cannot be closed by bumping micromatch. Forcing chokidar@^4 (which no longer depends on braces) does not eliminate braces from the tree (chain 1 remains) and risks breaking react-scripts/webpack-dev-server integration, so it is intentionally omitted.

Exposure analysis

braces is reached only through CRA's static internal config:

  • eslint-webpack-plugin → micromatch → braces for the hard-coded ESLint file-glob patterns in react-scripts' webpack config.
  • chokidar → braces for file-watch globs from CRA/tailwindcss.

No code path accepts attacker-controlled input and forwards it to braces.compile()/expand(). The vulnerable codepath (deeply nested brace patterns under the 10,001-character limit) is therefore not reachable from any runtime or build-time input this app accepts.

Alert state

  • The Dependabot alert remains open after this PR merges. There is no automated resolution path while braces has no patched release.
  • The alert should not be dismissed in the Dependabot UI without an explicit decision from the project owner. The exposure is documented for future maintainers and will be revisited when:
    • a patched braces release ships (or a maintained fork becomes standard), or
    • react-scripts is replaced by an actively maintained bundler.

Verification

  • npm install — clean, no errors (deprecation warnings only).
  • npm run build — Compiled successfully., production bundle produced in build/.
  • No code or dependency changes; only SECURITY.md added.

- record dependency chains, exposure analysis, and remediation options
  for Dependabot alert #200 (GHSA-vfj7-8cjw-p6xm / CVE-2026-93687)
- no installable fix exists: braces@3.0.3 is the latest npm release and
  the upstream maintainer disputes the report
- the vulnerable codepath is unreachable from any runtime/build input
  this app accepts; permanent fix requires migrating off react-scripts
- references Dependabot alert #200
@netlify

netlify Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for legacy-golfalpine ready!

Name Link
🔨 Latest commit 1c5884b
🔍 Latest deploy log https://app.netlify.com/projects/legacy-golfalpine/deploys/6ac8c398ab455a0008732af7
😎 Deploy Preview https://deploy-preview-114--legacy-golfalpine.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@marc-aurele-besner
marc-aurele-besner merged commit 560bd54 into main Oct 9, 2026
4 checks passed
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.

1 participant