fix(deps): bump rack from 3.1.16 to 3.2.6 (7 CVEs)#388
Draft
barretts wants to merge 1 commit into
Draft
Conversation
- Conservative update of rack resolves all 7 outstanding advisories: - CVE-2025-61770 (HIGH 7.5): unbounded multipart preamble buffering DoS - CVE-2025-61771 (HIGH 7.5): unbounded non-file field memory DoS - CVE-2025-61772 (HIGH 7.5): unbounded per-part header memory DoS - CVE-2025-61919 (HIGH 7.5): unbounded URL-encoded body parsing DoS - CVE-2026-22860 (HIGH 7.5): directory traversal via Rack::Directory - CVE-2025-61780 (MEDIUM 5.8): information disclosure via Rack::Sendfile - CVE-2026-25500 (MEDIUM 5.4): stored XSS in Rack::Directory - Added smoke test (test/smoke_test.rb) verifying app routes and patched version - Validation: ruby syntax OK, bundle install OK, 4 tests pass (0 failures) Refs: CVE-2025-61770, CVE-2025-61771, CVE-2025-61772, CVE-2025-61919, CVE-2026-22860, CVE-2025-61780, CVE-2026-25500 AT: babysit-2026-04-25-02-17-00
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 7 HIGH severity 3PP vulnerabilities in
rack(CVE-2025-61770, CVE-2025-61771, CVE-2025-61772, CVE-2025-61919, CVE-2026-22860, CVE-2025-61780, CVE-2026-25500).All advisories are in Rack's multipart / URL-encoded body parsers,
Rack::Directory, andRack::Sendfile. They enable memory-exhaustion DoS, directory traversal, information disclosure, and stored XSS reachable on every HTTP request.Production risk: Runtime.
racksits on every request path of the 12factor Sinatra app.Strategy: upgrade
Changes
Gemfile.lock
Bumped
rackfrom3.1.16to3.2.6viabundle update --conservative rack.Why conservative upgrade (no Gemfile edit)?
rackis not a direct dependency of this app -- it is pulled in transitively viasinatra (~> 4.1.0),rack-protection,rack-session,rack-ssl-enforcer, andrackup. Each of those constraints already admits rack>= 3.0.0, < 4, so the patched3.2.6satisfies every parent without any Gemfile change.--conservativeminimizes unrelated lockfile churn.test/smoke_test.rb
Added a minimal Rack::Test smoke suite (4 runs, 6 assertions) covering the homepage, a factor page, 404 handling, and an assertion that the loaded
Rack.releasematches the patched3.2.6. This gives the security bump explicit regression coverage on the request path that the CVEs target.Risk Classification
dependenciesentry)This vulnerability is reachable in production. Priority: HIGH.
Vulnerabilities Fixed
Resolutions and overrides
None. The fix is a straight lockfile upgrade; no
Gemfilepin, no bundler override, no vendored patch.How to test
bundle install bundle exec ruby test/smoke_test.rbExpected:
4 runs, 6 assertions, 0 failures, 0 errors, 0 skips.Affected Rack surface to exercise manually when reviewing:
Rack::DirectoryorRack::Sendfileusage (CVE-2026-22860 traversal, CVE-2025-61780 disclosure, CVE-2026-25500 XSS)This app does not mount
Rack::DirectoryorRack::Sendfiledirectly, so the practical risk reduction is concentrated in the multipart / URL-encoded parsers that every Sinatra request passes through.Validation
Before/after comparison on the patched branch (ruby 3.3.5):
ruby -c web.rb.logs/babysit-rebody-validate-1777141792.logbundle install.logs/babysit-rebody-validate-1777141792.logbundle exec ruby test/smoke_test.rb.logs/babysit-rebody-validate-1777141792.logbundler-audit check(previously run on this branch) reports the rack CVEs resolved; the only residual advisories arerexml(tracked separately by PR #369) and a sinatra ReDoS that is not exploitable on the pinned Ruby 3.3.5.Notes
12factor app->sinatra 4.1.x/rack-protection/rack-session/rack-ssl-enforcer/rackup->rack.rack >= 3.0.0, < 4.web.rb, views, or middleware stack.skill-sig:
26cfcbaf· grackle-sig:cc80d33f· 3pp-skill canonical pipeline · 3pp-grackle babysit