CVE-2025-47278: Flask uses fallback key instead of current signing key
Flask is a web server gateway interface (WSGI) web application framework. In Flask 3.1.0, the way fallback key configuration was handled resulted in the last fallback key being used for signing, rather than the current signing key. Signing is provided by the `itsdangerous` library. A list of keys can be passed, and it expects the last (top) key in the list to be the most recent key, and uses that for signing. Flask was incorrectly constructing that list in reverse, passing the signing key first. Sites that have opted-in to use key rotation by setting `SECRET_KEY_FALLBACKS` care likely to unexpectedly be signing their sessions with stale keys, and their transition to fresher keys will be impeded. Sessions are still signed, so this would not cause any sort of data integrity loss. Version 3.1.1 contains a patch for the issue.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2025-47278?
The severity of CVE-2025-47278 is classified as high due to the risk of improper key signing.
How do I fix CVE-2025-47278?
To fix CVE-2025-47278, upgrade Flask to version 3.1.1 or later.
What versions of Flask are affected by CVE-2025-47278?
Flask versions prior to 3.1.1 are affected by CVE-2025-47278.
What impact does CVE-2025-47278 have on applications?
CVE-2025-47278 can lead to security vulnerabilities in applications relying on Flask for session signing.
What components are involved in the exploitation of CVE-2025-47278?
CVE-2025-47278 involves the Flask framework and itsdangerous library for signing sessions.