Skip to main content

Thelia CVE-2026-120206

| EUVDEUVD-2026-114727 MEDIUM
Cross-Site Request Forgery (CSRF) (CWE-352)
2026-10-31 VulnCheck GHSA-2qjc-j63h-9f97
5.9
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft malicious link to admin toggle/delete route
  2. Delivery
    Lure logged-in administrator to click it
  3. Exploit
    Browser sends authenticated GET with session cookie
  4. Execution
    Unprotected toggle/position (or token-replayed delete) action runs
  5. Impact
    Catalogue/config objects deleted, hidden or reordered

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK

1 technique across 1 tactic: Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a currently authenticated Thelia back-office administrator who performs active interaction - clicking a crafted link or visiting a hostile page in the same browser - because the PHPSESSID cookie is sent on top-level GET navigation under SameSite=Lax. For the delete routes, the attacker must additionally have obtained the single per-session CSRF token, which the application leaks by carrying it in the URL query string (?_token=) where it is captured by server/proxy access logs, browser history, HTTP Referer headers, or any XSS on the admin domain. The setToggleVisibilityAction and updatePositionAction actions inherited from AbstractCrudController required no token at all, so toggling visibility/activation and reordering are exploitable as pure CSRF without any token leak. Limiting factors: no exploitation is possible without an active admin session (the routes 302-redirect anonymous requests to /admin/login) and without victim interaction; affects Thelia before 3.2.0 and the listed companion template/module packages.

Impact

This is a genuine but moderate-priority issue, not a drop-everything emergency. The signals are internally consistent: the supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:L) yields 5.9 (medium), and the vuln.today decision label is 'this_month' rather than act_now or emergency. There is no CISA KEV listing and no EPSS score in the input, so there is no evidence of active or widespread exploitation - exploitation status is 'no public exploit identified at time of analysis' in the packaged sense, though a detailed step-by-step PoC is published in the vendor GHSA advisory (see exploit_scenario). The practical risk is bounded by the attack preconditions: the victim must be a currently logged-in back-office administrator who performs user interaction (UI:A), and for the delete routes the attacker must separately obtain the per-session CSRF token that leaks via the URL (access logs, browser history, Referer, or XSS). Crucially, the advisory and patch show the setToggleVisibilityAction and updatePositionAction inherited from AbstractCrudController accepted no token at all, so those two are exploitable as pure CSRF with no token leak required. Impact is integrity/availability (unauthorized delete, hide, reorder of catalogue and configuration objects, plus storefront breakage from deleting defaults), with no confidentiality impact. Net: a real, fixable flaw worth patching on a normal cycle; the authenticated-admin-plus-interaction requirement and the niche deployment footprint keep it out of mass-exploitation territory.

Exploit ScenarioDerived

An attacker hosts a page or email containing a crafted link (or auto-loading GET) to a Thelia back-office action and lures a logged-in administrator to click it; the PHPSESSID cookie rides the top-level GET navigation (SameSite=Lax), and the unprotected toggle/position actions execute with no token - while delete actions execute if the attacker has also obtained the URL-leaked per-session token. A detailed working PoC (including login-wall and token controls) is published in the vendor GHSA advisory, so defenders should treat the technique as public. Attack vector is network with low complexity but requires active admin interaction (UI:A).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 31, 2026

Cross-site request forgery in Thelia's back office lets a crafted link or hostile page make a logged-in administrator delete, hide or reorder catalogue and configuration objects without any error or audit entry. All Thelia releases before 3.2.0 are affected: the single per-session CSRF token is rendered into URL query strings (so it leaks through access logs, browser history, HTTP Referer headers or any XSS on the admin domain), and the setToggleVisibilityAction and updatePositionAction routes inherited from AbstractCrudController performed state changes without any token check, making toggles and reordering exploitable as pure CSRF with no token theft at all. The attacker needs no privileges (CVSS PR:N) but exploitation requires a currently authenticated back-office administrator to actively click the link, since anonymous requests are redirected to /admin/login; a public proof-of-concept reference exists in the vendor advisory, it is not verified as working exploit code, and there is no indication of active exploitation at time of analysis.

RemediationAI

Vendor-released patch: upgrade Thelia core to 3.2.0 (https://github.com/thelia/thelia/releases/tag/3.2.0, commit 55a7156e552d0b8145309b10175d13ecc1187433) and the default-twig back-office template to 1.2.0 (commit a9647682572de056ba258a2d4d53e42f5b591b84), as documented in advisory GHSA-cfvv-2jvw-x2hp. The patch adds token enforcement (403 on a missing or invalid token) to deleteAction(), setToggleVisibilityAction(), updatePositionAction() and genericUpdatePositionAction(), and reads the token from the _token body field, then the X-CSRF-Token header, then the deprecated query string; any custom module whose back-office list toggles or reorders rows through those actions without sending _token must be updated to send it or it will start receiving 403s. The two packages listed without a fixed release, thelia/backoffice-default-template up to 2.6.2 and thelia/smarty-module up to 3.0.2, have no vendor-released patch identified at time of analysis; for those, the associated templates and Smarty plugins must be changed to render state-changing actions as POST forms carrying a hidden _token field (or send the X-CSRF-Token header) instead of {token_url} links. On 3.2.0, setting the thelia.token.accept_query_string parameter to false refuses URL-borne tokens entirely, which removes the leak path; the trade-off is that any back-office page or third-party module still sending _token in the query string will break with a rejected token until it is converted to body/header submission, which is why the parameter remains true by default in this release. Note that these actions remain reachable by a single top-level GET navigation while the administrator holds a session, so completing the upgrade across core and every installed template/module package is the only complete fix.

Affected VersionsENISA

Thelia Smarty Module 0 ≤3.0.3
Thelia Back-office Default Template 0 ≤2.6.2
Thelia Back-office Default Twig Template 0 <1.2.0
Thelia 0 <3.2.0
Thelia Core 0 <3.2.0

Affected Packages

euvd thelia fix: 3.2.0
euvd thelia_back_office_default_template no fix
euvd thelia_back_office_default_twig_template fix: 1.2.0
euvd thelia_core fix: 3.2.0
euvd thelia_smarty_module no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 5 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-352 (cross-site request forgery) compounded by CWE-598 (sensitive information in query string). Thelia's back-office protection is built on Thelia\Tools\TokenProvider, which holds a single md5(random_bytes(32)) value per session, shared across every action, and the {token_url} Smarty plugin appends it to action URLs as ?_token=. Because that one secret guards everything, a single leak compromises every mutation. Compounding this, the back-office routing in templates/backOffice/default/Config/Resources/routing/admin.xml declares methods="post" for only one delete route (admin.address.delete); the remaining delete routes and all toggle routes declare no method, so HTTP GET drives them, and controllers such as AbstractCrudController::deleteAction(), LangController::deleteAction(), ModuleController::deleteAction() and CouponController::deleteAction() read the token with $request->query->get('_token') rather than from the request body. The AbstractCrudController toggle/position actions had no token validation whatsoever before the fix. The 3.2.0 change introduces TokenProvider::checkRequestToken(), which reads the token from the _token body field first, then the X-CSRF-Token header, then (deprecated) the query string, compares in constant time, and a denyWithoutValidToken() guard returning HTTP 403 that now fronts deleteAction(), setToggleVisibilityAction(), updatePositionAction() and genericUpdatePositionAction(). A new parameter, thelia.token.accept_query_string, defaults to true in 3.2.0 and is intended to flip to false in a later release. The attack surface spans the CPE-identified packages cpe:2.3:a:thelia:thelia, thelia_core, thelia_back-office_default_twig_template, thelia_back-office_default_template and thelia_smarty_module, and the PHPSESSID cookie is transmitted on top-level GET navigation under SameSite=Lax, which is what makes the one-click link delivery work.

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 5.9 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N
vuln.today AI 7.1 HIGH

CSRF needs an authenticated admin to click (UI:R) but the unprotected toggle/position actions need no token (AC:L, PR:N); impact is unauthorized state change (I:H) plus storefront breakage (A:L), no disclosure.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:L/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
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Thelia before 3.2.0 contains a cross-site request forgery vulnerability in the back office that allows attackers to forge administrative actions because per-session CSRF tokens leak via URL query strings. Attackers can reuse leaked tokens or target the unprotected setToggleVisibilityAction and updatePositionAction to make logged-in administrators delete, hide or reorder catalogue and configuration objects.

Threat Intelligence Overview

EPSS Score
0.1%
Top 96% exploitable
Prevalence
Low
niche open-source PHP e-commerce platform, limited production footprint
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

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-120205 HIGH
7.4 Oct 31

Stored cross-site scripting in Thelia before 3.1.0 lets anyone who self-registers a front-office customer account plant

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