# CVE-2023-32321: CKAN remote code execution and private information access via crafted resource ids

> Attackers can achieve remote code execution and access private data via crafted resource IDs and unsafe pickle loading in CKAN data portals.

- **Severity:** Critical 9.8 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 26 May 2023
- **Updated:** 14 Jan 2025
- **Also known as:** GHSA-446m-hmmm-hm8m, PYSEC-2026-312

## What is CVE-2023-32321?

CVE-2023-32321 is a critical code injection vulnerability in ckan, published on 26 May 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

CKAN is an open-source data management system for powering data hubs and data portals. Multiple vulnerabilities have been discovered in Ckan which may lead to remote code execution. An arbitrary file write in `resource_create` and `package_update` actions, using the `ResourceUploader` object.  Also reachable via `package_create`, `package_revise`, and `package_patch` via calls to `package_update`. Remote code execution via unsafe pickle loading, via Beaker's session store when configured to use the file session store backend. Potential DOS due to lack of a length check on the resource id. Information disclosure: A user with permission to create a resource can access any other resource on the system if they know the id, even if they don't have access to it. Resource overwrite: A user with permission to create a resource can overwrite any resource if they know the id, even if they don't have access to it. A user with permissions to create or edit a dataset can upload a resource with a specially crafted id to write the uploaded file in an arbitrary location. This can be leveraged to Remote Code Execution via Beaker's insecure pickle loading. All the above listed vulnerabilities have been fixed in CKAN 2.9.9 and CKAN 2.10.1. Users are advised to upgrade. There are no known workarounds for these issues.

Weakness: CWE-20 (Improper Input Validation)

## Which versions are affected by CVE-2023-32321?

5 open source packages ship an affected version, including ckan. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ckan` | PyPI | All versions | 2.9.9, 2.10.1 |
| `ckan` | PyPI | All versions | 2.9.9 |
| `ckan` | PyPI | All versions | 2.9.9 |
| `ckan` | PyPI | From 2.10.0 | 2.10.1 |
| `ckan` | PyPI | From 2.10.0 | 2.10.1 |

Products: Okfn Ckan.

## How do I fix CVE-2023-32321?

Upgrade ckan to a fixed version for your release line: 2.9.9 or 2.10.1.

## Is CVE-2023-32321 being exploited?

There is no known exploitation of CVE-2023-32321 in the wild and no public exploit code.

## Other vulnerabilities in ckan

- [CVE-2023-32696](https://insights.sbomify.com/CVE-2023-32696/): Excessive permissions for ckan user (high 8.8)
- [CVE-2022-43685](https://insights.sbomify.com/CVE-2022-43685/): CKAN contains Improper Authentication leading to account takeover (high 8.8)
- [CVE-2023-22746](https://insights.sbomify.com/CVE-2023-22746/): CKAN is vulnerable to session secret shared across instances using Docker images (high 8.6)
- [CVE-2026-42031](https://insights.sbomify.com/CVE-2026-42031/): CKAN: Unauthenticated SQL Injection and Authorization Bypass in `datastore_search_sql` (high 8.3)
- [CVE-2024-41675](https://insights.sbomify.com/CVE-2024-41675/): CKAN has a Cross-site Scripting vector in the Datatables view plugin (medium 6.8)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2023-32321 and fix it if it is affected.

What it is: CVE-2023-32321 is a critical code injection vulnerability in ckan, published on 26 May 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2023-32321 in the wild and no public exploit code.

Affected packages and fixed versions:
- ckan (PyPI): affected all versions; fixed in 2.9.9, 2.10.1
- ckan (PyPI): affected all versions; fixed in 2.9.9
- ckan (PyPI): affected all versions; fixed in 2.9.9
- ckan (PyPI): affected from 2.10.0; fixed in 2.10.1
- ckan (PyPI): affected from 2.10.0; fixed in 2.10.1

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2023-32321/ (Markdown: https://insights.sbomify.com/CVE-2023-32321/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2023-32321
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2023-32321
- OSV: https://osv.dev/vulnerability/CVE-2023-32321

---
From sbomify Insights: https://insights.sbomify.com/CVE-2023-32321/
Summaries are generated and may contain mistakes; the official description above is the record.
