fix(deps): body-parser 2.2.2 → 2.3.0, clearing GHSA-v422-hmwv-36x6 - #17
Merged
Conversation
Committed separately from the fix that follows, because it is not a change: `pnpm install --lockfile-only` with no dependency edit at all rewrites 48 lines. The committed file was written in an ordering the pinned pnmp no longer produces, so every future lockfile touch would drag this churn along and bury whatever the real edit was. Proven to be ordering only: sorting both versions line-by-line yields byte-identical files, so no resolution, integrity hash or version moved.
An invalid `limit` value silently disables size enforcement, so a request body is accepted unbounded — low severity, but this dependency sits under auth-provider, which the provin.oss quickstart runs as its front door. Nothing upstream had to move. The advisory was tracked as "waiting on @o3co/auth-provider-core's express pin", which was wrong twice over: that package declares express as a PEER dependency (^5.0.0), so the consumer picks the version, and express 5.2.1 already allows body-parser ^2.2.1 — of which 2.3.0 is a member. The lockfile was simply holding the resolution from before 2.3.0 was published. `pnpm update body-parser --recursive` was the whole fix. Verified rather than assumed: `grep body-parser pnpm-lock.yaml` shows only 2.3.0, and a from-scratch install (node_modules deleted) materializes exactly one copy — the first check showed two, which was a stale .pnpm directory the incremental install had not pruned. Full workspace build and test green: 507 tests across 7 packages.
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.
Summary
GHSA-v422-hmwv-36x6— an invalidlimitvalue silently disables sizeenforcement, so a request body is accepted unbounded. Low severity, but the
dependency sits under auth-provider, which the provin.oss quickstart runs as
its front door.
Nothing upstream had to move
This was tracked as "waiting on
@o3co/auth-provider-core's express pin".That was wrong twice over:
@o3co/auth-provider-coredeclares express as a peerDependency(
^5.0.0) — the consumer picks the version, not the library.express@5.2.1already allowsbody-parser: ^2.2.1, and 2.3.0 is a memberof that range. The lockfile was simply holding a resolution from before
2.3.0 was published.
pnpm update body-parser --recursivewas the entire fix.Two commits, deliberately
89aa726pnpm install --lockfile-onlywith no dependency edit rewrites 48 lines — the committed file was written in an ordering the pinned pnpm no longer produces. Proven to be ordering alone: sorting both versions line-by-line yields byte-identical files, so nothing resolved differently.content-type1.0.5→2.0.0,type-is2.0.1→2.1.0,+media-typer)Splitting them keeps the security fix reviewable instead of buried under churn
that would otherwise ride along with any future lockfile touch.
Verified, not assumed
grep body-parser pnpm-lock.yaml→ only2.3.0remains.rm -rf node_modules) materializes exactly onecopy. The first check showed two — a stale
.pnpmdirectory the incrementalinstall had not pruned, which would have read as "the fix did not take".
🤖 Generated with Claude Code