{"schema_version":"1.7.3","id":"GHSA-9j94-67jr-4cqj","published":"2025-05-08T14:45:33Z","modified":"2026-02-04T03:21:10.639382Z","aliases":["CVE-2025-46336"],"related":["CGA-gvv9-gcjc-45p7","CVE-2025-46336"],"summary":"Rack session gets restored after deletion","details":"## Summary\n\nWhen using the `Rack::Session::Pool` middleware, simultaneous rack requests can restore a deleted rack session, which allows the unauthenticated user to occupy that session.\n\n## Details\n\n[Rack session middleware](https://github.com/rack/rack-session/blob/v2.1.0/lib/rack/session/abstract/id.rb#L271-L278) prepares the session at the beginning of request, then saves is back to the store with possible changes applied by host rack application. This way the session becomes to be a subject of race conditions in general sense over concurrent rack requests.\n\n## Impact\n\nWhen using the `Rack::Session::Pool` middleware, and provided the attacker can acquire a session cookie (already a major issue), the session may be restored if the attacker can trigger a long running request (within that same session) adjacent to the user logging out, in order to retain illicit access even after a user has attempted to logout.\n\n## Mitigation\n\n- Update to the latest version of `rack-session`, or\n- Ensure your application invalidates sessions atomically by marking them as logged out e.g., using a `logged_out` flag, instead of deleting them, and check this flag on every request to prevent reuse, or\n- Implement a custom session store that tracks session invalidation timestamps and refuses to accept session data if the session was invalidated after the request began.\n\n## Related\n\nThis code was previously part of `rack` in Rack < 3, see <https://github.com/rack/rack/security/advisories/GHSA-vpfw-47h7-xj4g> for the equivalent advisory in `rack` (affecting Rack < 3 only).","affected":[{"package":{"name":"rack-session","ecosystem":"RubyGems","purl":"pkg:gem/rack-session"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.1.1"}]}],"versions":["2.0.0","2.1.0"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2025/05/GHSA-9j94-67jr-4cqj/GHSA-9j94-67jr-4cqj.json"}}],"references":[{"type":"WEB","url":"https://github.com/rack/rack-session/security/advisories/GHSA-9j94-67jr-4cqj"},{"type":"WEB","url":"https://github.com/rack/rack/security/advisories/GHSA-vpfw-47h7-xj4g"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-46336"},{"type":"WEB","url":"https://github.com/rack/rack-session/commit/c28c4a8c1861d814e09f2ae48264ac4c40be2d3b"},{"type":"PACKAGE","url":"https://github.com/rack/rack-session"},{"type":"WEB","url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack-session/CVE-2025-46336.yml"}],"database_specific":{"cwe_ids":["CWE-362","CWE-367","CWE-613"],"github_reviewed":true,"github_reviewed_at":"2025-05-08T14:45:33Z","nvd_published_at":"2025-05-08T20:15:30Z","severity":"MODERATE"},"severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N"}]}