Bump picomatch from 2.3.1 to 2.3.2#97
Conversation
…HSA-3v7f-55p6-f55p) - Add parent-scoped yarn resolutions for @babel/cli/**/picomatch and np/**/picomatch to force ^2.3.2 - Fixes HIGH ReDoS via extglob quantifiers (CVE-2026-33671, CVSS 7.5) - Fixes moderate method injection in POSIX character classes (CVE-2026-33672) - Validation: lint exit 0, build exit 0, test exit 0 (10 passing) Refs: GHSA-c2c7-rcm5-vvqj, GHSA-3v7f-55p6-f55p AT: babysit-2026-04-25-01-42-29
|
Grackle review -- no-CI patch bump VerificationFindingsLOW #1 -- Resolutions are parent-scoped rather than global VERIFIED: The resolutions target @babel/cli//picomatch and np//picomatch (package.json:90-91) rather than a blanket "**/picomatch" or top-level "picomatch" entry. This is conservative and correct -- it scopes the override to known consumers. However, any OTHER transitive consumer of picomatch@^2.x not rooted under @babel/cli or np would still get 2.3.1 from the lockfile. REFUTATION: check whether other paths resolve picomatch -- the lockfile shows a single merged entry at yarn.lock:5064 covering all ^2.x ranges, so in practice all consumers resolve to 2.3.2. No actual gap exists. Verified location: LOW #2 -- Upstream release is security-only with no breaking changes VERIFIED: picomatch 2.3.2 release notes list exactly two CVE fixes and one constructor-exception fix. No deprecations, no behavioral changes to matching logic, no new APIs. Full changelog link confirms diff is 2.3.1...2.3.2 only. Line unverified: the cited snippet does not map to a unique changed line in this PR. What's solid
Priority stack for the authorNo fixes needed. The change is minimal, correctly scoped, and the upstream release is security-only with no behavioral changes. Recommendation: GO skill-sig: 26cfcbaf · 3pp-skill-sig: ad61853a |
8a9f560b)Summary
Fixes 2 HIGH severity 3PP vulnerabilities in
picomatch(GHSA-c2c7-rcm5-vvqj, GHSA-3v7f-55p6-f55p).picomatchprior to 2.3.2 is vulnerable to two high-severity advisories that were first patched in 2.3.2. The package appears in this repo only via build/test toolchain parents.Production risk: Build-time only
Build-time only:
picomatchis pulled in transitively by@babel/cliandnp, both of which aredevDependencies. It is not loaded by the publishedreact-malibulibrary at runtime. See the Risk Classification section below for the canonical copy for each tier.Strategy: override
Changes
package.json
Added 2 version-range-specific
resolutionsentries forcingpicomatchto the patched version under the two parent chains that pull it in:Why scoped (parent-selector) resolutions instead of a global
"picomatch": "^2.3.2"?picomatchappears in the tree twice -- older 2.x under the babel/np toolchain and 4.x elsewhere. A global override would attempt to collapse both versions and risk breaking packages that declare a peer range likepicomatch@^4. The<parent>/**/picomatchselectors isolate the fix to the two vulnerable chains (@babel/cliandnp) without touching the 4.x resolution. Upgrading the direct parents does not re-resolve their locked transitives, so aresolutionsoverride is the minimal-risk way to force the lockfile to pick up the patched 2.3.2 line.yarn.lock
Lockfile re-resolved so
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1, picomatch@^2.3.2now points at2.3.2(previously2.3.1). No other packages changed.Risk Classification
dependenciesentry)devDependenciesand its parents are build tools (webpack, babel, ember-cli)This PR: Build-time.
picomatchparents are@babel/cli(babel build tool) andnp(release tool), bothdevDependencies.Vulnerabilities Fixed
How to Test
Exercise the affected surface by running the full test suite (the babel/register pipeline and vite build both load
picomatchtransitively via micromatch/anymatch). No application code importspicomatchdirectly, so the smoke path is the build/test pipeline itself.Validation
Validation was run on the PR head branch (
babysit/5cc97b07/picomatch) with node 20.19.6 (satisfiesengines.node=^20.19.0 || >=22.12.0):yarn install)Full log:
.logs/babysit-rebody-validate-1777138112.log.Notes
react-malibu -> @babel/cli -> ... -> picomatch@2.3.1andreact-malibu -> np -> ... -> picomatch@2.3.1. Both now resolve to2.3.2via the scopedresolutionsentries.resolutions-only fix. The patched 2.3.2 is API-compatible with 2.3.1 (patch release).picomatchis unaffected by these advisories and is left untouched.skill-sig:
26cfcbaf· grackle-sig:8a9f560b· 3pp-skill canonical pipeline · 3pp-grackle babysit