Miggo Logo

CVE-2025-54499: Mattermost has an Observable Timing Discrepancy vulnerability

3.1

CVSS Score
3.1

Basic Information

EPSS Score
0.06394%
Published
10/16/2025
Updated
10/16/2025
KEV Status
No
Technology
TechnologyGo

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
github.com/mattermost/mattermost/server/v8go< 8.0.0-20250728063359-38208b8f065f8.0.0-20250728063359-38208b8f065f
github.com/mattermost/mattermost-servergo>= 10.5.0, < 10.5.1110.5.11
github.com/mattermost/mattermost-servergo>= 10.11.0, < 10.11.310.11.3

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The analysis of the provided patches indicates that the vulnerability lies in the IsValidWebAuthRedirectURL function. This function was using a non-constant-time string comparison (strings.Index), which could be exploited in a timing attack. The patch replaces this with a safer comparison of URL components.

It is important to note that there is a discrepancy between the vulnerability description, which mentions 'Cloud API keys and OAuth client secrets,' and the actual code change in the provided commits, which is related to OAuth redirect URL validation and the siteURL. The identified vulnerable function does not directly handle API keys or client secrets. However, the core of the vulnerability - the lack of constant-time comparison - is present and was fixed in the analyzed commits. The confidence is rated as 'medium' due to this discrepancy.

Vulnerable functions

utils.IsValidWebAuthRedirectURL
server/channels/utils/utils.go
The function used `strings.Index` for comparing the redirect URL with the site URL. `strings.Index` does not run in constant time, making it vulnerable to timing attacks. An attacker could potentially leak the `siteURL` by carefully crafting redirect URLs and measuring the response time.

WAF Protection Rules

WAF Rule

M*tt*rmost v*rsions **.*.x <= **.*.**, **.**.x <= **.**.* **il to us* *onst*nt-tim* *omp*rison *or s*nsitiv* strin* *omp*risons w*i** *llows *tt**k*rs to *xploit timin* or**l*s to p*r*orm *yt*-*y-*yt* *rut* *or** *tt**ks vi* r*spons* tim* *n*lysis on

Reasoning

T** *n*lysis o* t** provi*** p*t***s in*i**t*s t**t t** vuln*r**ility li*s in t** `IsV*li*W***ut*R**ir**tURL` *un*tion. T*is *un*tion w*s usin* * non-*onst*nt-tim* strin* *omp*rison (`strin*s.In**x`), w*i** *oul* ** *xploit** in * timin* *tt**k. T**