Missing SameSite attribute on session cookies from Action Pack session stores
Published: November 04, 2026
SECURITY IDENTIFIERS
- GHSA: GHSA-gmj8-hvj3-49mw
- Vendor Advisory: https://github.com/rails/rails/security/advisories/GHSA-gmj8-hvj3-49mw
GEM
FRAMEWORK
SEVERITY
CVSS v3.x: 3.1 (Low)
PATCHED VERSIONS
~> 8.0.5, >= 8.0.5.2
>= 8.1.4.1
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.
RELATED
- https://rubygems.org/gems/actionpack/versions/8.1.4.1
- https://github.com/rails/rails/releases/tag/v8.1.4.1
- https://rubygems.org/gems/actionpack/versions/8.0.5.2
- https://github.com/rails/rails/releases/tag/v8.0.5.2
- https://github.com/rails/rails/commit/2d9f502df941e31ce9bad0e846564f49396bed46
- https://github.com/rails/rails/commit/f2392996be723708271a8d30bfcf0edc221e53ef
- https://github.com/rails/rails/security/advisories/GHSA-gmj8-hvj3-49mw
