fix(deps): bump rack-session to >=2.1.2 (GHSA-33qg-7wpp-89cq)#389
Draft
fix(deps): bump rack-session to >=2.1.2 (GHSA-33qg-7wpp-89cq)#389
Conversation
Resolves: - GHSA-33qg-7wpp-89cq (critical) -- first patched in 2.1.2 AT: babysit-2026-04-25-05-46-47
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.
cc80d33f)Summary
Fixes 1 CRITICAL severity 3PP vulnerability in
rack-session(GHSA-33qg-7wpp-89cq).rack-sessionprior to 2.1.2 is affected by a session-fixation issue: when an application callsRack::Session::Abstract::SessionHash#destroywithout rotating session identifiers, the underlying session store can leave the old session ID usable by an attacker. Upgrading to 2.1.2 includes the upstream fix that ensures destroyed sessions cannot be reused.Production risk: Runtime
rack-sessionis reachable in production: it is a transitive dependency ofsinatra, which serves the 12factor application's HTTP surface. Any request path that exercises session handling touches this code.Strategy: upgrade-transitive
Changes
Gemfile
No manifest changes.
rack-sessionis not a direct dependency; it is pulled in transitively bysinatra. Bumping via a scopedbundle updateavoids touching the top-level Gemfile.Gemfile.lock
Re-resolved
rack-sessionfrom2.1.1to2.1.2:BUNDLED WITHalso advanced from2.4.10to2.5.16as a side effect of runningbundle updateunder the local Bundler. This is a tooling-version bump, not a dependency change.Why
bundle update rack-session --conservative(transitive upgrade) rather than an override?rack-sessionis an indirect dependency viasinatra. Bundler's dependency resolver will honorsinatra's declared range and pull the highest compatiblerack-sessionrelease (2.1.2) without touching any other gem.--conservativeprevents Bundler from also upgrading sibling gems that happen to share a constraint graph withrack-session, keeping the lockfile delta minimal (one line of actual dependency change). Ruby/Bundler does not have a first-class override mechanism equivalent topnpm.overridesorresolutions; a scopedbundle updateis the idiomatic way to lift a single transitive.Lockfile
Gemfile.lockre-resolved to pull in the patchedrack-sessionversion.Risk Classification
dependenciesentry)This vulnerability is reachable in production. Priority: HIGH.
Vulnerabilities Fixed
How to Test
Local verification on the PR branch:
Affected surface to smoke-test:
session[...]inweb.rbor downstream handlers.Validation
Validation is a before/after comparison. Pre-existing environmental notes are captured so they are not mistaken for regressions introduced by this PR.
bundle checkis the install-time gate)Environmental note (not a regression):
bundle checkon the rebody pass reportedYour Ruby version is 3.2.2, but your Gemfile specified 3.3.5because the local rebody environment only has Ruby 3.2.2 installed. This is an environmental mismatch, not a regression of the fix. The original fix run was performed under Ruby 3.3.5 and reportedbundle checkexit 0.ruby -c web.rbcontinues to reportSyntax OK(exit 0) on the rebody re-check.Notes
12factor app -> sinatra -> rack-session.BUNDLED WITHadvanced from2.4.10to2.5.16as a side effect of runningbundle updateunder the local Bundler. Teams that pin Bundler in CI should confirm their CI image satisfies this floor; otherwise the pin can be reverted manually without affecting the security fix.pnpm.overrides/resolutionsequivalent is needed on the Bundler side, so the override registry section does not apply to this PR.skill-sig:
26cfcbaf· grackle-sig:cc80d33f· 3pp-skill canonical pipeline · 3pp-grackle babysit