Skip to main content

Thelia CVE-2026-120205

| EUVDEUVD-2026-114726 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-31 VulnCheck GHSA-pfq9-82gg-2grp
7.4
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Self-register with script payload in customer name
  2. Delivery
    Admin attaches per-customer coupon condition
  3. Exploit
    Stored XSS fires in admin /admin session
  4. Execution
    Script reads CSRF token and POSTs new super-admin account
  5. Impact
    Persistent 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).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Thelia 0 <3.1.0
Thelia Core 0 <3.1.0

Affected Packages

euvd thelia fix: 3.1.0
euvd thelia_core fix: 3.1.0

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

Vendor (VulnCheck) PRIMARY 7.4 HIGH
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
vuln.today AI 8.0 HIGH

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.

3.1 AV:N/AC:H/PR:N/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Active
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Low
niche open-source PHP e-commerce platform, limited enterprise footprint
Social Media
2
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

37
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +37
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Thelia

View all
CVE-2026-103535 HIGH
8.8 Oct 12

Authenticated back-office users of Thelia through 2.6.1 can chain a path traversal flaw in the translation editor with a

CVE-2026-107248 HIGH
8.8 Oct 12

Server-side template injection in the back-office Email/Messages feature of Thelia 3.0.0 lets an authenticated user hold

CVE-2026-109397 HIGH
8.6 Oct 12

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

CVE-2026-103521 HIGH
7.2 Oct 12

Remote code execution in Thelia v2.6.0 is achievable by an authenticated administrator who abuses the document update en

CVE-2026-103522 HIGH
7.2 Oct 12

Authenticated attackers holding a Thelia administrator account can achieve remote code execution on the underlying serve

CVE-2026-120207 HIGH
7.0 Oct 31

Thelia Page Module through 2.0.3 exposes back-office delete routes for page tags, documents and images without CSRF toke

CVE-2026-120249 MEDIUM
6.9 Nov 01

The Thelia back-office Twig template bundle (thelia/backoffice-default-twig-template) before 1.1.1 exposes two admin cat

CVE-2026-103523 MEDIUM
6.1 Oct 12

An open redirect in Thelia's address-creation workflow (versions up to and including 2.6.0) lets an attacker craft a URL

CVE-2026-103527 MEDIUM
6.1 Oct 12

Reflected cross-site scripting in Thelia versions up to 2.6.0 allows remote attackers to execute arbitrary JavaScript in

CVE-2026-120206 MEDIUM
5.9 Oct 31

Cross-site request forgery in Thelia's back office lets a crafted link or hostile page make a logged-in administrator de

CVE-2026-103528 MEDIUM
5.4 Oct 12

Authenticated administrators of Thelia 2.6.0 and earlier can achieve remote code execution by injecting malicious Smarty

CVE-2026-103537 MEDIUM
5.4 Oct 12

Authenticated template injection in Thelia versions up to and including 2.6.1 lets a logged-in user with access to Smart

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy