Action Pack: Missing SameSite attribute on session cookies from Action Pack session stores
GHSA-gmj8-hvj3-49mw · CVE-2026-126067
Published · Modified
AI SAST
Find this class of vulnerability in your own code
Corgea's AI-native static analysis detects vulnerabilities like this one across your repositories, ranks them by exploitability, and returns review-ready fixes.
Description
Impact
Action Pack session stores other than ActionDispatch::Session::CookieStore (CacheStore, MemCacheStore, and third-party stores built on AbstractStore, AbstractSecureStore or the session mixins) write the session cookie without a SameSite attribute, regardless of config.action_dispatch.cookies_same_site_protection, which defaults to :lax. Only CookieStore applies the configured policy. In browsers that do not treat a cookie without the attribute as SameSite=Lax, a cross-site request could carry the session cookie, possibly leading to cross-site request forgery against actions that do not verify an authenticity token, such as those of API-only applications.
Applications are affected when they use a session store other than CookieStore and do not pass same_site: to config.session_store.
Details
In the fixed releases, every session store sets the session cookie's SameSite attribute from cookies_same_site_protection when its options have no :same_site key. An explicit same_site: option, including same_site: nil, and a :same_site value in a store's DEFAULT_OPTIONS still take precedence.
Workarounds
Pass same_site: when configuring the session store, for example config.session_store :cache_store, same_site: :lax.
Releases
The fixed releases are available at the normal locations.
Patches for those who cannot upgrade at once:
- 8.1: https://github.com/rails/rails/commit/2d9f502df941e31ce9bad0e846564f49396bed46.patch
- 8.0: https://github.com/rails/rails/commit/f2392996be723708271a8d30bfcf0edc221e53ef.patch
Credit
This issue was responsibly reported by HackerOne researcher tjvc.
References
- WEB https://github.com/rails/rails/security/advisories/GHSA-gmj8-hvj3-49mw
- WEB https://github.com/rails/rails/commit/2d9f502df941e31ce9bad0e846564f49396bed46
- WEB https://github.com/rails/rails/commit/f2392996be723708271a8d30bfcf0edc221e53ef
- PACKAGE https://github.com/rails/rails
- WEB https://github.com/rails/rails/releases/tag/v8.0.5.2
- WEB https://github.com/rails/rails/releases/tag/v8.1.4.1
- WEB https://github.com/rubysec/ruby-advisory-db/blob/master/gems/actionpack/GHSA-gmj8-hvj3-49mw.yml
Ready to move
Start Securing
Free, no credit card | First findings in minutes