CVE-2026-41255
CKAN: CSRF exemption primed by anonymous requests
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. Prior to 2.10.10 and 2.11.5, Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection. The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. This API was never intended for request level changes, it is primarily a decorator for static configuration. An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi). This vulnerability is fixed in 2.10.10 and 2.11.5.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- Required
What an attacker can affect
- Confidentiality
- Low
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.1
CKAN: CSRF exemption primed by anonymous requests
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. Prior to 2.10.10 and 2.11.5, Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection. The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. This API was never intended for request level changes, it is primarily a decorator for static configuration. An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi). This vulnerability is fixed in 2.10.10 and 2.11.5.
- Record
CVE-2026-41255- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
EUVDEUVD-2026-30117
6.1
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. Prior to 2.10.10 and 2.11.5, Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection. The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. This API was never intended for request level changes, it is primarily a decorator for static configuration. An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi). This vulnerability is fixed in 2.10.10 and 2.11.5.
- Record
EUVD-2026-30117- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mcvf-jxcw-vj73
6.1
CKAN has CSRF exemption primed by anonymous requests
Views can be marked as exempt from CSRF protection
Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection.
The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. Thsi API was never intended for request level changes, it is primarily a decorator for static configuration.
An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi).
This could be leveraged with XSS to perform actions using other user's credentials.
References
- Vulnerability report by @Shirshaw64p (original reporter)
- Record
GHSA-mcvf-jxcw-vj73- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
NVD
6.1
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. Prior to 2.10.10 and 2.11.5, Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection. The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. This API was never intended for request level changes, it is primarily a decorator for static configuration. An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi). This vulnerability is fixed in 2.10.10 and 2.11.5.
- Record
CVE-2026-41255- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
OSV
6.1
CKAN: CSRF exemption primed by anonymous requests
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. Prior to 2.10.10 and 2.11.5, Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection. The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. This API was never intended for request level changes, it is primarily a decorator for static configuration. An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi). This vulnerability is fixed in 2.10.10 and 2.11.5.
- Record
CVE-2026-41255- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
OSVGHSA-mcvf-jxcw-vj73
6.1
CKAN has CSRF exemption primed by anonymous requests
Views can be marked as exempt from CSRF protection
Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection.
The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. Thsi API was never intended for request level changes, it is primarily a decorator for static configuration.
An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi).
This could be leveraged with XSS to perform actions using other user's credentials.
References
- Vulnerability report by @Shirshaw64p (original reporter)
- Record
GHSA-mcvf-jxcw-vj73- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-352
- Updated
- 2026-11-02
OSVPYSEC-2026-2418
6.1
CKAN has CSRF exemption primed by anonymous requests
Views can be marked as exempt from CSRF protection
Access to the views via tokens or unauthenticated requests marked the endpoint as not requiring CSRF protection.
The marking was a member variable in flask-wtf.csrf.CSRFProtect(), which was stored as a module level variable in the flask_app middleware. Thsi API was never intended for request level changes, it is primarily a decorator for static configuration.
An unauthenticated request could hit a protected endpoint, exempting it from CSRF protection for the life of the particular server process. (e.g. one worker of uwsgi).
This could be leveraged with XSS to perform actions using other user's credentials.
References
- Vulnerability report by @Shirshaw64p (original reporter)
- Record
PYSEC-2026-2418- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
ckanPyPI |
2.10.0 up to 2.10.10 | 2.10.10 |
ckanPyPI |
2.11.0 to 2.11.4 | 2.11.5 |
ckanPyPI |
2.10.0 up to 2.10.10, plus listed versions 2.10.12.10.32.10.42.10.52.10.62.10.72.10.82.10.9 |
2.10.10 |
ckanPyPI |
2.11.0 up to 2.11.5, plus listed versions 2.11.12.11.22.11.32.11.4 |
2.11.5 |
ckanPyPI |
2.10.0 up to 2.10.10, 2.11.0 up to 2.11.5, plus listed versions 2.10.12.10.32.10.42.10.52.10.6 Show 7 moreShow less2.10.72.10.82.10.92.11.12.11.22.11.32.11.4 |
2.10.102.11.5 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-41255 is a medium vulnerability (CVSS 6.1) in Ckan, published April 29, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.12%, the 2nd percentile. Fixed in ckan 2.10.10.
References
github.com/ckan/ckan/security/advisories/GHSA-mcvf-jxcw-vj73
github.com/Shirshaw64p/security-advisories/tree/main/CVE-2026-41255
docs.ckan.org/en/2.10/changelog.html
docs.ckan.org/en/2.11/changelog.html
nvd.nist.gov/vuln/detail/CVE-2026-41255
github.com/advisories/GHSA-mcvf-jxcw-vj73
github.com/CVEProject/cvelistV5/tree/main/cves/2026/41xxx/CVE-2026-41255.json
github.com/ckan/ckan
pypi.org/project/ckan