Bagisto
CVE-2026-121733
LOW
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as shop customer
-
DeliveryUpload .html attachment via RMA send-message
-
ExploitFile stored unvalidated under /storage/rma-conversation
-
ExecutionAdministrator opens attachment in browser
-
ImpactJavaScript executes in shop admin origin
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 | The attacker must hold an authenticated Bagisto customer account (PR:L) and the store's RMA (Return Merchandise Authorization) return-request feature must be in use, since exploitation goes through the RMA send-message/conversation endpoint; pre-2.4.5 that endpoint accepts attachments without enforcing file type or extension (the allowed_file_extension configuration was not validated server-side), so a .html file carrying JavaScript is stored and later served from /storage/rma-conversation/ under the shop's origin. The decisive limiting factor is victim interaction: the payload only fires when a store administrator opens the uploaded attachment in their browser (UI:P) - it does not execute automatically. Combined limits are therefore valid customer authentication, an active RMA workflow, and an administrator choosing to open the attachment, which together confine impact to the administrator's browser session rather than the server. |
| Impact | This is a genuinely low-priority issue, consistent across every available signal rather than a high-CVSS/low-real-risk mismatch. The supplied CVSS 4.0 base score is 2.1 (Low), and the vuln.today Decision label is 'monitor'. Exploitation status is no public exploit identified at time of analysis - there is no CISA KEV listing and no POC/exploit code in the input; the VulnCheck entry is an advisory, not working exploit code. No EPSS score is provided, so probabilistic exploitation likelihood cannot be quantified from this data. The CVSS 4.0 vector itself tempers urgency: it requires authenticated access (PR:L - an attacker needs a valid shop customer account), an attack requirement (AT:P) and victim interaction (UI:P), and it models no impact on the vulnerable system (VC:N/VI:N/VA:N) with only low subsequent-system confidentiality and integrity impact (SC:L/SI:L) reflecting script execution in an administrator's browser. The chief caveat is that CVSS 4.0's VC:N/VI:N/VA:N understates how stored XSS feels operationally - if an admin session is hijacked, real administrative actions become possible - but the scoring treats that as subsequent-system impact, keeping the base score low. Net: low real-world priority, bounded by both the authentication requirement and the need for an administrator to open the malicious attachment. |
| Exploit ScenarioDerived | A malicious party who holds (or registers) an authenticated shop customer account opens a Return Merchandise Authorization (RMA) conversation and, via the send-message endpoint, uploads a .html attachment containing JavaScript, which Bagisto before 2.4.5 stores under /storage/rma-conversation/ without validating file type or extension. When a store administrator later opens that attachment, the script executes in the shop's own origin in the admin's browser, enabling actions such as session/cookie theft or requests made as the administrator. No public exploit code is identified; exploitation also depends on an administrator actually opening the file. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Stored cross-site scripting in Bagisto's RMA conversation attachments (all versions before 2.4.5) allows any authenticated customer to upload an .html file that is stored under /storage/rma-conversation/ and executes JavaScript in the shop's own origin when a store administrator opens it in a browser. The issue is scored only 2.1 under CVSS 4.0 (independent assessment: CVSS 3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) because exploitation requires a valid customer account, an active RMA return-request workflow, and an administrator who deliberately opens the attachment, confining impact to that administrator's browser session rather than the server. No public exploit code or CISA KEV entry was identified at time of analysis, and the vuln.today decision label is monitor.
RemediationAI
Vendor-released patch: upgrade to Bagisto 2.4.5 (https://github.com/bagisto/bagisto/releases/tag/v2.4.5); if an immediate upgrade is not possible, apply the upstream fixes in commits 204e43c26705b66ef2ddfb2a9eebb25f5e8f6a2c and e28db3e8c53a94a99cf153ac338466720acd9004, which add mimetypes-based validation of the attachment against sales.rma.setting.allowed_file_extension, replace storeAs() with server-generated filenames via $file->store(), reject mass-assigned request data, and add an order-ownership check. Advisory details are at https://www.vulncheck.com/advisories/bagisto-before-2.4.5-stored-xss-via-rma-conversation-attachment-upload. Note that pre-2.4.5 the allowed_file_extension configuration was not enforced server-side, so merely changing that setting does not mitigate the flaw; the practical interim control is to disable customer attachment uploads on the RMA send-message endpoint - or the RMA feature as a whole - until the patch is deployed, at the cost of removing the return-request messaging workflow for customers.
Affected ProductsAI
Bagisto versions before 2.4.5 are affected, specifically the Webkul/Shop RMA customer-account controller (the NVD reference points at line 408 of RMAController.php as shipped in tag v2.4.4). No CPE strings were supplied in the available intelligence, so coverage is established from the vendor repository and release references rather than a CPE match: https://github.com/bagisto/bagisto (project), https://github.com/bagisto/bagisto/blob/v2.4.4/packages/Webkul/Shop/src/Http/Controllers/Customer/Account/RMAController.php#L408 (vulnerable code), https://github.com/bagisto/bagisto/releases/tag/v2.4.5 (fixed release), and the VulnCheck advisory at https://www.vulncheck.com/advisories/bagisto-before-2.4.5-stored-xss-via-rma-conversation-attachment-upload. Deployments that do not enable the RMA return-request feature are not exposed through this endpoint per the assessed exploitation conditions.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Bagisto is a Laravel-based open-source e-commerce platform; the vulnerable code lives in packages/Webkul/Shop/src/Http/Controllers/Customer/Account/RMAController.php, and the weakness class is CWE-434 (unrestricted upload of file with dangerous type). Before 2.4.5, the sendMessage() action passed request()->all() directly into the RMA message repository and persisted the attachment with $file->getClientOriginalName() plus storeAs('rma-conversation/'.$storedMessage->id, $filename), preserving the client-supplied name and extension with no MIME-type or extension validation - even though a sales.rma.setting.allowed_file_extension configuration value existed, it was never enforced server-side. Because those files are served from public storage at /storage/rma-conversation/ under the store's own origin, an uploaded .html document containing inline JavaScript is rendered as a same-origin page and its script runs with the shop's cookies and session context. The upstream commits replace the mass-assigned input with an explicit validated payload ('rma_id' => required|integer|exists:rma,id, 'message' => nullable|string, 'file' => nullable|file|mimetypes:<configured allowlist>), switch to $file->store() so the stored filename is server-generated while the original name is kept only as attachment metadata, and add an order-ownership check comparing customer_id to the authenticated customer guard. The CVSS 4.0 AT:P and UI:P metrics reflect the requirement that the RMA feature be in active use and that an administrator actively open the uploaded file; how the payload is delivered to the administrator beyond that upload-and-open sequence is not described in the available sources.
Know when Bagisto 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:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Authenticated customer upload gives PR:L; admin must open the file (UI:R); script crosses from customer to admin authority (S:C) with limited script-context confidentiality/integrity impact and no availability loss.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
DescriptionCVE.org
Bagisto before 2.4.5 contains a stored cross-site scripting vulnerability that allows authenticated customers to upload HTML files via the RMA send-message endpoint without type or extension validation. Attackers can upload a .html attachment containing JavaScript served under /storage/rma-conversation/, executing script in the shop's origin when an administrator opens it.
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.
Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.
Bagisto eCommerce platform before 2.3.10 is vulnerable to server-side template injection (SSTI) through customer address
Bagisto eCommerce platform (2.3 branch before 2.3.10) leaves installation API routes active after setup, allowing unauth
Bagisto eCommerce platform versions before 2.3.10 suffer from server-side template injection through user-controllable f
Bagisto v1.5.1 is vulnerable to Server-Side Template Injection (SSTI). Rated high severity (CVSS 8.8), this vulnerabilit
In Webkul Bagisto before 0.1.5, the functionalities for customers to change their own values (such as address, review, o
Bagisto 0.1.5 allows CSRF under /admin URIs. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable,
Arbitrary file read in Bagisto v2.4.1 allows unauthenticated remote attackers to retrieve sensitive files outside the we
Stored XSS in Bagisto's CMS page editor allows authenticated attackers to bypass input sanitization by crafting maliciou
Bagisto is an open source laravel eCommerce platform. [CVSS 7.1 HIGH]
CSV formula injection in Bagisto through 2.3.7 allows a user who can create or edit product data to store spreadsheet fo
Server-side template injection in Bagisto 2.3.7 lets an authenticated backend user with product-creation privileges inje
Bagisto v1.5.1 is vulnerable for Cross site scripting(XSS) via png file upload vulnerability in product review option. R
NVD
CVE.org
GitHub
Exploit-DB