Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSelf-register with script payload in customer name
-
DeliveryAdmin attaches per-customer coupon condition
-
ExploitStored XSS fires in admin /admin session
-
ExecutionScript reads CSRF token and POSTs new super-admin account
-
ImpactPersistent full shop and data takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Injection requires only a free, self-registered front-office customer account: the CustomerRegisterForm validates firstname/lastname with NotBlank only (no regex, no HTML stripping), so a script payload is stored raw in customer.firstname. Execution then requires a non-attacker-controlled precondition (the AT:P / UI:A gate): an administrator must attach a 'For one or more customers' (ForSomeCustomers) coupon condition referencing the attacker's customer, and must then load the coupon edit page or GET /admin/coupon/draw/conditionsSummaries/{couponId}, where ForSomeCustomers::getSummary() emits the unescaped name through a Twig {{ value|raw }} 'html' DataTable cell. Limiting factors: the payload only fires on this specific condition-summary path (the same record is correctly escaped everywhere else in the back office), it needs the admin to both configure that condition and view it, and it is confined to Thelia versions before 3.1.0. The chain to super-admin is aided by the absence of any Content-Security-Policy on admin pages and by admin CSRF tokens being embedded in page HTML (HttpOnly cookies do not block same-origin fetch of those tokens). |
| Impact | The vendor CVSS 4.0 vector (CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N, base 7.4 High) describes a network-reachable, unauthenticated-to-inject stored XSS (PR:N) whose severity is tempered by two real-world gates: AT:P (a specific precondition must exist) and UI:A (an administrator must act). The GHSA advisory from VulnCheck confirms the mechanism and documents a full, step-by-step PoC chain from self-registration to super-admin account creation, so the technical impact is genuinely high (VC:H/VI:H - confidentiality of all customer PII/orders and integrity via a persistent attacker-controlled admin account). However, the attack is not fire-and-forget: it depends on an administrator attaching a 'For one or more customers' coupon condition that references the attacker's customer record and then viewing that coupon's condition summary. There is no CISA KEV listing and no EPSS score was provided in the input, so there is no signal of active or widespread exploitation - the vuln.today decision label is 'this_week', not act_now/emergency. On balance this is a legitimately serious but conditional flaw: high impact and a detailed public PoC, offset by the admin-interaction requirement and a niche product footprint. Treat it as a this-week patching priority rather than an immediate emergency. Note that the input provides no EPSS value, so exploitation-probability cannot be compared against the KEV/PoC signals. |
| Exploit ScenarioDerived | An unauthenticated attacker self-registers a front-office customer account, placing a script payload (e.g. '<svg onload=...>') in the firstname/lastname field, which the registration form stores verbatim. When an administrator later attaches a per-customer coupon condition referencing that account and opens the coupon in the back office, the payload executes in the authenticated /admin origin and, using CSRF tokens read from the admin page HTML, silently creates a new super-admin account. A detailed public PoC reference for this full chain exists in the GHSA advisory, though the input does not confirm it as packaged working exploit code; the network attack vector is offset by the required administrator interaction (UI:A). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
Stored cross-site scripting in Thelia before 3.1.0 lets anyone who self-registers a front-office customer account plant script in the customer name, which then executes in an administrator's browser on the back-office coupon screen when a 'For one or more customers' condition references that customer. Injection is effectively unauthenticated (CVSS PR:N) since registration validates firstname/lastname with NotBlank only, but execution is gated: an administrator must both attach that condition to a coupon and then load the coupon edit page or GET /admin/coupon/draw/conditionsSummaries/{couponId} (the AT:P and UI:A gates). From the admin origin the payload steals the in-page CSRF token and creates a new administrator account that resolves to super-admin; the vendor advisory publishes a staged proof-of-concept walkthrough, though it is not independently verified as working exploit code, and no active exploitation is confirmed (CISA KEV not listed). The vendor CVSS 4.0 score is 7.4 High, while our assessment lands on CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N, prioritised as this_week.
RemediationAI
Vendor-released patch: Thelia 3.1.0. Upgrade both composer/thelia/thelia and composer/thelia/core to 3.1.0 or later (release https://github.com/thelia/thelia/releases/tag/3.1.0); the fix commit c90d59375089a0833a56703c6f9f9ddea17bddc9 introduces ConditionAbstract::escapeSummaryValue() and escapes every database-derived value inserted into condition summaries, including customer name and reference. If upgrading cannot be done immediately, the compensating controls implied by the published analysis are: avoid attaching 'For one or more customers' coupon conditions that reference untrusted self-registered customers, or restrict coupon-condition configuration to administrators who accept the risk, since the payload only fires on that specific summary render path and is correctly escaped everywhere else in the back office; and emit a Content-Security-Policy on /admin responses (none is currently sent), which would break the same-origin fetch-and-replay of in-page CSRF tokens that the exploit chain depends on, at the cost of testing effort because back-office pages and the DataTable 'html' cells rely on inline markup and would need nonce or hash adjustments. Rate-limiting or manual approval of front-office registrations reduces who can plant a payload but does not remediate the underlying escaping defect. Vendor advisory with full details and PoC: https://github.com/thelia/thelia/security/advisories/GHSA-r63g-6wfg-v5v9.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CWE-79 stored XSS arising from a trusted-markup pipeline in Thelia's coupon condition summaries. Customer registration (templates/frontOffice/flexy/src/Form/CustomerRegisterForm.php) constrains firstname/lastname with NotBlank only, so an HTML payload is persisted verbatim in customer.firstname (VARCHAR 255). ForSomeCustomers::getSummary() (core/lib/Thelia/Condition/Implementation/ForSomeCustomers.php:105-132) concatenates the raw surname, firstname and reference into the %customer_list% parameter of the message 'Customer is %op% <strong>%customer_list%</strong>'; Symfony's message formatter interpolates parameters with plain strtr and does not escape them because the message itself intentionally carries markup. The resulting string reaches the browser via the DataTable 'html' cell, which disables Twig autoescaping by design (coupon/conditions.html.twig:7 -> components/DataTable/cells/html.html.twig:1, {{ value|raw }}). The same customer record is correctly escaped elsewhere in the back office, so the defect is confined to the condition-summary render path. The missing Content-Security-Policy on admin pages and the placement of admin CSRF tokens in page HTML rather than in HttpOnly cookies let same-origin fetch() read a token and replay form posts, which is what turns the XSS into persistent super-admin creation. The upstream fix (commit c90d59375089a0833a56703c6f9f9ddea17bddc9) adds ConditionAbstract::escapeSummaryValue() using htmlspecialchars with ENT_QUOTES|ENT_SUBSTITUTE and applies it not only to ForSomeCustomers but also to country, category, product, module-title, amount and currency insertions in sibling condition implementations. Affected CPEs are cpe:2.3:a:thelia:thelia and cpe:2.3:a:thelia:thelia_core.
Know when Thelia 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:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
PR:N because any unauthenticated visitor can self-register to plant the payload; AC:H and UI:R because an administrator must attach the specific coupon condition and view it; S:C as stored front-office data executes in the admin security context.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Thelia before 3.1.0 contains a stored cross-site scripting vulnerability in ForSomeCustomers::getSummary() that allows unauthenticated attackers to inject scripts via unescaped customer names. Attackers can register with a script payload as their name that executes when administrators view related coupons, stealing CSRF tokens to create administrator accounts.
Technical POC Analysis
CWE-79, stored XSS.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A stored cross-site scripting vulnerability in Thelia (versions before 3.1.0) allows self-registered customers to inject malicious scripts into their names, which can execute in an administrator's browser when coupon conditions are managed. This could enable an attacker to create a rogue super-admin account, compromising the entire e-commerce platform and exposing sensitive customer and payment data. Leadership should prioritize remediation given the high potential for administrative takeover and data breach.
Apply vendor patch.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Authenticated back-office users of Thelia through 2.6.1 can chain a path traversal flaw in the translation editor with a
Server-side template injection in the back-office Email/Messages feature of Thelia 3.0.0 lets an authenticated user hold
Remote code execution in the Thelia e-commerce platform (all versions before 3.1.2 and 3.2.x before 3.2.1) allows an aut
Remote code execution in Thelia v2.6.0 is achievable by an authenticated administrator who abuses the document update en
Authenticated attackers holding a Thelia administrator account can achieve remote code execution on the underlying serve
Thelia Page Module through 2.0.3 exposes back-office delete routes for page tags, documents and images without CSRF toke
The Thelia back-office Twig template bundle (thelia/backoffice-default-twig-template) before 1.1.1 exposes two admin cat
An open redirect in Thelia's address-creation workflow (versions up to and including 2.6.0) lets an attacker craft a URL
Reflected cross-site scripting in Thelia versions up to 2.6.0 allows remote attackers to execute arbitrary JavaScript in
Cross-site request forgery in Thelia's back office lets a crafted link or hostile page make a logged-in administrator de
Authenticated administrators of Thelia 2.6.0 and earlier can achieve remote code execution by injecting malicious Smarty
Authenticated template injection in Thelia versions up to and including 2.6.1 lets a logged-in user with access to Smart
EUVD-2026-114726
GHSA-pfq9-82gg-2grp
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB