# CVE-2026-2415: Unsafe variable evaluation in email templates

> Attackers can inject code into email templates to exfiltrate sensitive system configuration data, including database passwords and API keys.

- **Severity:** High 7.5 (`CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:P/RE:L/U:Red`)
- **Exploited in the wild:** Not known
- **Login needed:** Any signed-in user
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 16 Feb 2026
- **Updated:** 17 Feb 2026
- **Also known as:** GHSA-r8p8-qw9w-j9qv, PYSEC-2026-110

## What is CVE-2026-2415?

CVE-2026-2415 is a high-severity code injection vulnerability in pretix, published on 16 Feb 2026. Any signed-in user can exploit it over the network, with no action from the victim.

### Official description

Emails sent by pretix can utilize placeholders that will be filled with customer data. For example, when {name}
 is used in an email template, it will  be replaced with the buyer's 
name for the final email. This mechanism contained two security-relevant
 bugs:

  *  
It was possible to exfiltrate information about the pretix system through specially crafted placeholder names such as {{event.__init__.__code__.co_filename}}.
 This way, an attacker with the ability to control email templates 
(usually every user of the pretix backend) could retrieve sensitive 
information from the system configuration, including even database 
passwords or API keys. pretix does include mechanisms to prevent the usage of such 
malicious placeholders, however due to a mistake in the code, they were 
not fully effective for the email subject.

  *  
Placeholders in subjects and plain text bodies of emails were 
wrongfully evaluated twice. Therefore, if the first evaluation of a 
placeholder again contains a placeholder, this second placeholder was 
rendered. This allows the rendering of placeholders controlled by the 
ticket buyer, and therefore the exploitation of the first issue as a 
ticket buyer. Luckily, the only buyer-controlled placeholder available 
in pretix by default (that is not validated in a way that prevents the 
issue) is {invoice_company}, which is very unusual (but not
 impossible) to be contained in an email subject template. In addition 
to broadening the attack surface of the first issue, this could 
theoretically also leak information about an order to one of the 
attendees within that order. However, we also consider this scenario 
very unlikely under typical conditions.

Out of caution, we recommend that you rotate all passwords and API keys contained in your  pretix.cfg https://docs.pretix.eu/self-hosting/config/  file.

Weakness: CWE-627 (Dynamic Variable Evaluation)

## Which versions are affected by CVE-2026-2415?

7 open source packages ship an affected version, including pretix. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `pretix` | PyPI | All versions | 2025.9.4 |
| `pretix` | PyPI | All versions | 2025.9.4 |
| `pretix` | PyPI | From 2025.10.0 | 2025.10.2 |
| `pretix` | PyPI | From 2025.10.0 | 2025.10.2 |
| `pretix` | PyPI | From 2026.1.0 | 2026.1.1 |
| `pretix` | PyPI | From 2026.1.0 | 2026.1.1 |
| `pretix` | PyPI | From 4.16.0 | 2026.1.1 |

Products: Pretix Pretix.

## How do I fix CVE-2026-2415?

Upgrade pretix to a fixed version for your release line: 2025.9.4, 2025.10.2 or 2026.1.1.

## Is CVE-2026-2415 being exploited?

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

## Other vulnerabilities in pretix

- [CVE-2024-27447](https://insights.sbomify.com/CVE-2024-27447/): pretix mishandles file validation (critical 9.8)
- [CVE-2024-8113](https://insights.sbomify.com/CVE-2024-8113/): Stored XSS in Placeholder Samples in Mail Preview (high 7.2)
- [CVE-2026-5600](https://insights.sbomify.com/CVE-2026-5600/): pretix: API leaks check-in data between events of the same organizer (medium 5.5)
- [CVE-2025-13742](https://insights.sbomify.com/CVE-2025-13742/): Limited HTML injection in emails (low 2.4)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-2415 and fix it if it is affected.

What it is: CVE-2026-2415 is a high-severity code injection vulnerability in pretix, published on 16 Feb 2026. Any signed-in user can exploit it over the network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-2415 in the wild and no public exploit code.

Affected packages and fixed versions:
- pretix (PyPI): affected all versions; fixed in 2025.9.4
- pretix (PyPI): affected all versions; fixed in 2025.9.4
- pretix (PyPI): affected from 2025.10.0; fixed in 2025.10.2
- pretix (PyPI): affected from 2025.10.0; fixed in 2025.10.2
- pretix (PyPI): affected from 2026.1.0; fixed in 2026.1.1
- pretix (PyPI): affected from 2026.1.0; fixed in 2026.1.1
- pretix (PyPI): affected from 4.16.0; fixed in 2026.1.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-2026-2415/ (Markdown: https://insights.sbomify.com/CVE-2026-2415/index.md)
```

## Sources

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

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