Critical severity · published Nov 27, 2025
CVE-2025-12421
Account Takeover via Code Exchange Endpoint
9.9
CVSS
0.4%
EPSS
No
On KEV
Description
Mattermost versions 11.0.x <= 11.0.2, 10.12.x <= 10.12.1, 10.11.x <= 10.11.4, 10.5.x <= 10.5.12 fail to to verify that the token used during the code exchange originates from the same authentication flow, which allows an authenticated user to perform account takeover via a specially crafted email address used when switching authentication methods and sending a request to the /users/login/sso/code-exchange endpoint. The vulnerability requires ExperimentalEnableAuthenticationTransfer to be enabled (default: enabled) and RequireEmailVerification to be disabled (default: disabled).
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Attack vector
Network
Complexity
Low
Privileges
Low
User interaction
None
Confidentiality
High
Integrity
High
Availability
High
Scope
Changed
Exploitation
Is it being used?
Exploit prediction (EPSS)0.4% · higher than 36% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
MA
Mattermost · Mattermost
11.0.0 through 11.0.2; 10.12.0 through 10.12.1; 10.11.0 through 10.11.4; 10.5.0 through 10.5.12 · source: vendor
MS
Mattermost Server · Mattermost
10.5.0 before 10.5.13; 10.11.0 before 10.11.5; 10.12.0 before 10.12.2; 11.0.0 before 11.0.3 · source: NVD
Affected product
MA
Mattermost
Mattermost
More from Mattermost
9.9
CVE-2026-4858
Path traversal in integration action URL leading to arbitrary API execution via system admin’s auth token.
9.9
CVE-2025-12419
Account takeover on OAuth/OpenID-enabled servers
9.6
CVE-2024-39777
Mattermost versions 9.9.x <= 9.9.0, 9.5.x <= 9.5.6, 9.7.x <= 9.7.5 and 9.8.x <= 9.8.1 fail to disallow unsolicited invites to expose access to local channels, when shared channels…
9.3
CVE-2026-12985
Mattermost DCR redirect URI allowlist bypass via improper URL component validation
9.1
CVE-2023-2193
Mattermost fails to invalidate existing authorization codes when deauthorizing an OAuth2 app, allowing an attacker possessing an authorization code to generate an access token