fix(deps): floor js-yaml on 4.3.1 — GHSA-5p4m-2wfm-xmqj (high) - #125
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GHSA-5p4m-2wfm-xmqj (high) — quadratic CPU consumption resolving
!!omapkeys, where a malicious YAML document burns CPU superlinearly in the number of map entries. First complete release is 4.3.1; the advisory notes the CVE-2026-59870 fix was never backported to 3.x.Nothing vulnerable ever shipped
js-yamlreaches the tree aseslint→js-yaml— development scope — and it does not appear in the committedbuild/index.js(verified: 0 references). The bundle is byte-identical before and after this change, so this owes no version bump andrequire-version-bumpshould pass without one.How the gap was found, and why it is worth writing down
The advisory fired on apple-mail-mcp, which already had a
js-yamloverride — pinned at^4.2.0, a floor written for an earlier advisory and below this fix. That is the failure mode worth naming: a caret range does not protect against an out-of-date floor. The caret stops the tree moving backwards; it never moves it forwards onto a newer fix. So an override can sit in the file looking like protection while enforcing a version that is no longer safe — the mirror image of thefast-uri: 3.1.4exact-pin-became-a-ceiling incident already documented beside it.The other three repos carried no
js-yamlentry at all, so all four are floored here in one pass.Verification
js-yaml@4.3.1resolved in all four lockfiles, with the override present in the lockfile's ownoverrides:section — the only proof an override is actually live.minimumReleaseAgesoak. NominimumReleaseAgeExcludecarve-out was added.pnpm audit: no known vulnerabilities in all four.