Skip to main content

Thelia CVE-2026-109397

| EUVDEUVD-2026-97494 HIGH
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-10-12 VulnCheck GHSA-hjxm-gpw4-w4q7
8.6
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Thelia back-office
  2. Exploit
    Upload PHP file with trailing-space filename
  3. Execution
    Sanitizer strips space, stores executable .php
  4. Impact
    Request 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).

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

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

Alert me

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

Thelia 3.2.0 <3.2.1
Thelia 0 <3.1.2

Affected Packages

euvd thelia fix: 3.1.2, 3.2.1

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

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

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.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

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.

Executive ViewAI

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 63% exploitable
Prevalence
Low
niche open-source PHP e-commerce platform, limited enterprise footprint
Data Quality
5 sources
Confidence: Medium

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.4%
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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

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

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.

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

CVE-2026-103529 MEDIUM
5.4 Oct 12

Remote code execution in Thelia 2.6.0 and earlier is achievable by an authenticated back-office administrator who uses t

CVE-2026-103524 MEDIUM
4.8 Oct 12

Stored cross-site scripting in Thelia (all versions from 0 through 2.6.0) lets an authenticated back-office user - speci

CVE-2026-103526 LOW
3.7 Oct 12

Username enumeration in Thelia 2.6.0 lets unauthenticated remote attackers determine which administrator accounts exist

CVE-2026-109396 LOW
2.3 Oct 12

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

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