Skip to content

fix(deps): body-parser 2.2.2 → 2.3.0, clearing GHSA-v422-hmwv-36x6 - #17

Merged
y1o1 merged 2 commits into
mainfrom
fix/body-parser-advisory
Jul 27, 2026
Merged

fix(deps): body-parser 2.2.2 → 2.3.0, clearing GHSA-v422-hmwv-36x6#17
y1o1 merged 2 commits into
mainfrom
fix/body-parser-advisory

Conversation

@y1o1

@y1o1 y1o1 commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Summary

GHSA-v422-hmwv-36x6 — an invalid limit value silently disables size
enforcement, 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.

vulnerable:  >= 2.0.0, < 2.3.0      patched: 2.3.0
was:         body-parser@2.2.2
now:         body-parser@2.3.0

Nothing upstream had to move

This was tracked as "waiting on @o3co/auth-provider-core's express pin".
That was wrong twice over:

  1. @o3co/auth-provider-core declares express as a peerDependency
    (^5.0.0) — the consumer picks the version, not the library.
  2. express@5.2.1 already allows body-parser: ^2.2.1, and 2.3.0 is a member
    of that range
    . The lockfile was simply holding a resolution from before
    2.3.0 was published.

pnpm update body-parser --recursive was the entire fix.

Two commits, deliberately

commit what
89aa726 ordering only. pnpm install --lockfile-only with 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.
this one the actual change — 28 lines, all of them body-parser and its own dependency edges (content-type 1.0.5→2.0.0, type-is 2.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 → only 2.3.0 remains.
  • A from-scratch install (rm -rf node_modules) materializes exactly one
    copy. The first check showed two — a stale .pnpm directory the incremental
    install had not pruned, which would have read as "the fix did not take".
  • Full workspace build + test: 507 tests across 7 packages, green.

🤖 Generated with Claude Code

y1o1 added 2 commits July 27, 2026 16:32
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.
@y1o1
y1o1 merged commit a7f2b8c into main Jul 27, 2026
3 checks passed
@y1o1
y1o1 deleted the fix/body-parser-advisory branch July 27, 2026 07:35
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