Miggo Logo

CVE-2025-64100: CKAN vulnerable to fixed session IDs

6.1

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
10/29/2025
Updated
10/29/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:N/A:N
Package NameEcosystemVulnerable VersionsFirst Patched Version
ckanpip>= 2.10.0, < 2.10.92.10.9
ckanpip>= 2.11.0, < 2.11.42.11.4

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability described is a session fixation issue in CKAN, where session identifiers were not regenerated after a user logs in. This could allow an attacker to hijack a user's session. The provided commit c2fe437f88be850a6edf7a32470772428819fab5 directly addresses this vulnerability. The patch modifies the login function in ckan/views/user.py to explicitly regenerate the session after successful authentication by calling current_app.session_interface.regenerate(session). The absence of this session regeneration logic in the login function is the root cause of the vulnerability. Therefore, the login function is the vulnerable function that would be observed in a runtime profile when the vulnerability is exploited (i.e., when a user logs in with a fixated session ID).

Vulnerable functions

login
ckan/views/user.py
The `login` function was vulnerable to session fixation. Before the patch, it did not regenerate the session ID after a user successfully authenticated. This allowed an attacker to potentially hijack a user's session if they could fixate the session ID in the victim's browser. The patch adds a call to regenerate the session, mitigating the vulnerability.

WAF Protection Rules

WAF Rule

### Imp**t S*ssion i*s *oul* ** *ix** *y *n *tt**k*r i* t** sit* is *on*i*ur** wit* s*rv*r-si** s*ssion stor*** (*K*N us*s *ooki*-**s** s*ssion stor*** *y ****ult). T** *tt**k*r woul* n*** to *it**r s*t * *ooki* on t** vi*tim's *rows*r or st**l t**

Reasoning

T** vuln*r**ility **s*ri*** is * s*ssion *ix*tion issu* in *K*N, w**r* s*ssion i**nti*i*rs w*r* not r***n*r*t** **t*r * us*r lo*s in. T*is *oul* *llow *n *tt**k*r to *ij**k * us*r's s*ssion. T** provi*** *ommit `**************************************