# CVE-2023-48224: Cryptographically Weak Generation of One-Time Codes for Identity Verification in ethyca-fides

> Attackers can predict one-time verification codes to bypass identity checks and modify user privacy settings or delete data.

- **Severity:** High 8.2 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/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:** 15 Nov 2023
- **Updated:** 29 Aug 2024
- **Also known as:** GHSA-82vr-5769-6358, PYSEC-2026-1336

## What is CVE-2023-48224?

CVE-2023-48224 is a high-severity vulnerability in ethyca fides, published on 15 Nov 2023. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

Fides is an open-source privacy engineering platform for managing the fulfillment of data privacy requests in a runtime environment, and the enforcement of privacy regulations in code. The Fides Privacy Center allows data subject users to submit privacy and consent requests to data controller users of the Fides web application. Privacy requests allow data subjects to submit a request to access all person data held by the data controller, or delete/erase it.  Consent request allows data subject users to modify their privacy preferences for how the data controller uses their personal data e.g. data sales and sharing consent opt-in/opt-out. If `subject_identity_verification_required` in the `[execution]` section of `fides.toml` or the env var `FIDES__EXECUTION__SUBJECT_IDENTITY_VERIFICATION_REQUIRED` is set to `True` on the fides webserver backend, data subjects are sent a one-time code to their email address or phone number, depending on messaging configuration, and the one-time code must be entered in the Privacy Center UI by the data subject before the privacy or consent request is submitted. It was identified that the one-time code values for these requests were generated by the python `random` module, a cryptographically weak pseduo-random number generator (PNRG). If an attacker generates several hundred consecutive one-time codes, this vulnerability allows the attacker to predict all future one-time code values during the lifetime of the backend python process. There is no security impact on data access requests as the personal data download package is not shared in the Privacy Center itself. However, this vulnerability allows an attacker to (i) submit a verified data erasure request, resulting in deletion of data for the targeted user and (ii) submit a verified consent request, modifying a user's privacy preferences. The vulnerability has been patched in Fides version `2.24.0`. Users are advised to upgrade to this version or later to secure their systems against this threat. There are no known workarounds for this vulnerability.

Weakness: CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG))

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

3 open source packages ship an affected version, including ethyca-fides. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `ethyca-fides` | PyPI | All versions | 2.24.0 |
| `ethyca-fides` | PyPI | All versions | 2.24.0 |
| `ethyca-fides` | PyPI | All versions | 2.24.0 |

Products: Ethyca Fides.

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

Upgrade ethyca-fides to 2.24.0 or later.

## Is CVE-2023-48224 being exploited?

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

## Other vulnerabilities in ethyca fides

- [CVE-2024-45053](https://insights.sbomify.com/CVE-2024-45053/): Remote Code Execution Vulnerability via SSTI in Fides Webserver Jinja Email Templating Engine (critical 9.1)
- [CVE-2023-41319](https://insights.sbomify.com/CVE-2023-41319/): Remote Code Execution in Custom Integration Upload in Fides (high 8.8)
- [CVE-2025-57817](https://insights.sbomify.com/CVE-2025-57817/): Fides Webserver API is Vulnerable to OAuth Client Privilege Escalation (high 8.6)
- [CVE-2023-46124](https://insights.sbomify.com/CVE-2023-46124/): Server-Side Request Forgery Vulnerability in Custom Integration Upload (high 8.2)
- [CVE-2023-36827](https://insights.sbomify.com/CVE-2023-36827/): Fides vulnerable to Path Traversal in Webserver API (high 7.5)

## Fix prompt for AI coding agents

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

What it is: CVE-2023-48224 is a high-severity vulnerability in ethyca fides, published on 15 Nov 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-48224 in the wild and no public exploit code.

Affected packages and fixed versions:
- ethyca-fides (PyPI): affected all versions; fixed in 2.24.0
- ethyca-fides (PyPI): affected all versions; fixed in 2.24.0
- ethyca-fides (PyPI): affected all versions; fixed in 2.24.0

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-48224/ (Markdown: https://insights.sbomify.com/CVE-2023-48224/index.md)
```

## Sources

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

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