Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Thelia back-office
-
ExploitUpload PHP file with trailing-space filename
-
ExecutionSanitizer strips space, stores executable .php
-
ImpactRequest file to run code as web server user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK
2 techniques across 2 tactics: Command and Control, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid authenticated back-office (administrative) account with access to the document/file upload feature (e.g., product documents), reflected as PR:H. The concrete prerequisite is the filename-sanitization mismatch: FileProcessorService validates the raw client filename while FileManager::renameFile()/sanitizeFileName() strips characters outside [a-zA-Z0-9-_.] (trailing space, tab, zero-width space, or in-extension whitespace), so a name like 'report.php ' passes validation but is stored as an executable 'report.php' under public/cache/documents/, which is web-served and allowed to execute PHP. Limiting factors: exploitation is impossible without back-office credentials, requires the document-upload capability, and affects only Thelia versions before 3.1.2 and 3.2.x before 3.2.1 - patched installations reject names that would be stored under a server-executable extension. |
| Impact | This is a credible but access-gated remote code execution flaw (CWE-434, unrestricted file upload) in the Thelia e-commerce platform. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H) scores 8.6 (High) and is internally consistent with the description: exploitation is network-reachable with low complexity and no user interaction, but requires PR:H - an authenticated back-office (administrative) account - which is the single largest limiting factor. The high VC/VI/VA impact is justified because a stored .php file executing as the web server user yields full compromise of the application context. No EPSS score and no KEV listing were provided, and no public exploit is referenced, so exploitation signals are weak despite the high base score; the primary intelligence is the vendor security advisory (GHSA-5524-qfxp-33v9) and two confirmed patch commits reported by VulnCheck. Because the flaw requires privileged authentication, this is a 'high-CVSS but access-constrained' issue rather than an internet-wide mass-exploitation priority - it matters most where back-office access is broadly granted or where staff/credential compromise is plausible. Note the 'Microsoft' tag appears to be mislabeled (Thelia is an independent PHP/Symfony open-source project), which should not influence risk weighting. |
| Exploit ScenarioDerived | An authenticated back-office user (or an attacker who has phished/compromised such a staff account) uploads a PHP payload named like 'report.php ' with a trailing space; FileProcessorService validates the raw name while FileManager::sanitizeFileName()/renameFile() strips the space and stores an executable 'report.php' under public/cache/documents/. The attacker then requests that URL to run arbitrary code as the web server user. No public proof-of-concept is referenced, but the patch diff and test cases fully disclose the bypass technique (trailing space, tab, zero-width space, double-extension variants). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
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 authenticated back-office user to upload a PHP payload that is written into the web-served public/cache/documents/ directory and executed as the web server user. The flaw exists because FileProcessorService validates the filename exactly as the client sent it, while FileManager::renameFile()/sanitizeFileName() later strips characters outside [a-zA-Z0-9-_.], so a name such as 'report.php ' survives validation but is stored as the executable 'report.php'. The assessed vector (CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H) confirms exploitation requires a valid administrative account with access to the document-upload feature; no public exploit code has been identified at time of analysis, and the vendor has released fixed versions 3.1.2 and 3.2.1.
RemediationAI
Vendor-released patch: upgrade to Thelia 3.1.2 or 3.2.1 (https://github.com/thelia/thelia/releases/tag/3.1.2 and https://github.com/thelia/thelia/releases/tag/3.2.1); the underlying fixes are in commits 6b706f5cb96e6b12d890c6d16edb1c9d1fd8191a and b71258902b5dd278007d0f37ddad45f76d06d5bc, which re-validate the stored filename in addition to the client-supplied one - see advisory GHSA-5524-qfxp-33v9. If immediate upgrade is not possible, apply layered compensating controls: (1) block PHP execution in the upload/storage directory public/cache/documents/ at the web server layer (Apache: 'php_flag engine off' plus a 'RemoveHandler .php .phtml' directive in that directory's .htaccess; nginx: a location block for the documents path that returns 403 for \.(php|phtml)$ or routes the prefix to a non-PHP handler) - this is the most effective single control but will break any legitimate dynamic content served from that path, so verify no application feature depends on it; (2) restrict the back-office document-upload capability to the smallest possible set of trusted administrators (the vulnerability is only reachable with an authenticated back-office account), understanding this reduces but does not eliminate risk from compromised or malicious admin credentials; (3) deploy a WAF rule rejecting multipart filenames that contain trailing or embedded whitespace, tabs, zero-width characters, or non-[a-zA-Z0-9-_.] characters before the final extension, noting that obfuscation variants may evade simplistic patterns; (4) monitor public/cache/documents/ for newly written .php/.phtml files and alert on web-server execution from that directory. Alternatively, backport the upstream findRefusedExtension()/fileNames() logic from the referenced commits. None of the compensating controls should be treated as a substitute for upgrading to 3.1.2 or 3.2.1, and note that no vendor-released patch exists for versions older than 3.1.x - those deployments should migrate to a supported branch.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package 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-434 (Unrestricted Upload of File with Dangerous Type), realized here as a filename canonicalization mismatch rather than a simple extension blacklist bypass. Thelia's FileProcessorService::validateUpload() builds a blacklist regex and checks the client-supplied OriginalName, plus a defense-in-depth scan for server-executable segments (catching double extensions like 'shell.php.jpg'). Storage, however, calls FileManager::renameFile(), which reduces the name to the alphabet [a-zA-Z0-9-_.] and appends a model id. Any character outside that set - a trailing space, trailing tab, zero-width space (U+200B), a space inside the extension ('report.ph p'), a '#' ('hash.ph#p '), or a trailing-dot variant ('report.ph p.') - is silently dropped, so the name validated as harmless is persisted as a live .php or .phtml file under the web-accessible public/cache/documents/ path. Because that directory is served by the web server and permitted to execute PHP, the uploaded payload runs with the privileges of the web server user, giving full confidentiality, integrity and availability impact on the application host within that context (SC:N/SI:N/SA:N in the vendor's v4 vector). The upstream fix (commit 6b706f5cb96e6b12d890c6d16edb1c9d1fd8191a) introduces findRefusedExtension()/fileNames(), which apply both the configured blacklist and the executable-extension check to the client name AND to the name the file will actually be stored under, and extends the SVG sanitization decision to the stored name as well. The CPE cpe:2.3:a:thelia:thelia:*:*:*:*:*:*:*:* covers the entire affected product line.
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:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable upload with no user interaction but requires a privileged back-office account (PR:H); code execution as the web server user gives full C/I/A impact without scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Thelia before 3.1.2 and 3.2.x before 3.2.1 contains an unrestricted file upload vulnerability that allows authenticated back-office users to upload PHP files by appending a trailing space to filenames. FileProcessorService validates the raw filename but FileManager::sanitizeFileName() strips the space, storing an executable .php file under public/cache/documents/ for code execution as the web server user.
Articles & Coverage 1
Executive ViewAI
Thelia e-commerce deployments running versions prior to 3.1.2 or 3.2.x before 3.2.1 can be fully compromised by anyone holding back-office administrative credentials, allowing an attacker to run code on the storefront server itself. Because the affected system typically hosts customer data, order history, and payment-adjacent integrations, a successful compromise could disrupt online sales, expose regulated data, and require costly incident response and forensic remediation. Leadership should treat this as a priority remediation item for any internet-facing storefront on the impacted releases.
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
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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 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
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
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
Remote code execution in Thelia 2.6.0 and earlier is achievable by an authenticated back-office administrator who uses t
Stored cross-site scripting in Thelia (all versions from 0 through 2.6.0) lets an authenticated back-office user - speci
Username enumeration in Thelia 2.6.0 lets unauthenticated remote attackers determine which administrator accounts exist
CSV formula injection in Thelia (before 3.1.2 and 3.2.0 through 3.2.0, fixed in 3.2.1) lets unauthenticated visitors pla
EUVD-2026-97494
GHSA-hjxm-gpw4-w4q7
NVD
CVE.org
EPSS
Exploit-DB