CVE-2026-27205: Flask session does not add `Vary: Cookie` header when accessed in some ways
Flask is a web server gateway interface (WSGI) web application framework. In versions 3.1.2 and below, when the session object is accessed, Flask should set the Vary: Cookie header., resulting in a Use of Cache Containing Sensitive Information vulnerability. The logic instructs caches not to cache the response, as it may contain information specific to a logged in user. This is handled in most cases, but some forms of access such as the Python in operator were overlooked. The severity and risk depend on the application being hosted behind a caching proxy that doesn't ignore responses with cookies, not setting a Cache-Control header to mark pages as private or non-cacheable, and accessing the session in a way that only touches keys without reading values or mutating the session. The issue has been fixed in version 3.1.3.
Other sources
When the session object is accessed, Flask should set the Vary: Cookie header. This instructs caches not to cache the response, as it may contain information specific to a logged in user. This is handled in most cases, but some forms of access such as the Python in operator were overlooked.
The severity depends on the application's use of the session, and the cache's behavior regarding cookies. The risk depends on all these conditions being met.
1. The application must be hosted behind a caching proxy that does not ignore responses with cookies. 2. The application does not set a Cache-Control header to indicate that a page is private or should not be cached. 3. The application accesses the session in a way that does not access the values, only the keys, and does not mutate the session.
— GitHub
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/flaskto a version that resolves this vulnerability.Fixed in 3.1.3 - Upgrade
Upgrade
Flaskto a version that resolves this vulnerability.Fixed in 3.1.3 - Configuration
Ensure Flask sets the response header "Vary: Cookie" when the session object is accessed (issue affects Flask versions 3.1.2 and below).
Flask session handling Vary: Cookie = present - Configuration
Set a Cache-Control header on responses to indicate they are private or should not be cached, since the vulnerability relies on responses being cached even when they may contain logged-in-user-specific information.
Application response headers Cache-Control = private, no-cache (mark pages as private or non-cacheable) - Compensating control
Host the application behind a caching proxy that does not ignore responses with cookies.
Event History
Frequently Asked Questions
What is the severity of CVE-2026-27205?
The CVE-2026-27205 vulnerability has been recognized as having a moderate severity due to its potential impact on user session security.
How do I fix CVE-2026-27205?
To mitigate CVE-2026-27205, update Flask to version 3.1.3 or later where the issue has been addressed.
What does the CVE-2026-27205 vulnerability affect?
CVE-2026-27205 affects Flask applications where the session object is accessed without the proper `Vary: Cookie` header being set.
Who is affected by CVE-2026-27205?
Developers using Flask versions prior to 3.1.3 who rely on session-based user authentication may be affected by CVE-2026-27205.
What is the impact of CVE-2026-27205?
The impact of CVE-2026-27205 includes the risk of user-specific information being cached publicly, which could lead to session hijacking.