Bagisto
CVE-2025-62415
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as privileged admin/editor
-
DeliveryUpload JS-laden HTML renamed as .png
-
ExploitBackend converts file back to .html
-
ExecutionVictim admin opens stored file
-
PersistScript runs in victim session
-
ImpactSession hijack or privilege escalation
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization HTML tag escaping
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 an authenticated account with upload/content privileges in the Bagisto admin panel (PR:H) - specifically access to the TinyMCE image-upload feature used for rich content. The core technical condition is the backend's content-sniffing behavior: a file uploaded with a .png extension whose contents are detected as HTML/JavaScript is automatically re-saved with a .html extension, defeating the HTML-upload block. Realistic exploitation is further limited by the need for a second user (another admin or editor) to actively open/view the stored file (UI:R) for the payload to fire; it does not execute automatically. There is no unauthenticated or default-configuration path, which is the primary factor reducing real-world risk. |
| Impact | This is a stored/HTML-injection XSS (CWE-80) in Bagisto 2.3.7's TinyMCE image-upload feature, and the aggregate signals point to a genuine but low-to-moderate priority issue rather than an urgent one. The CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N, base 4.8 Medium) shows the defining constraint: PR:H means the attacker must already hold a high-privilege (admin/editor) account to upload the file, and UI:R means a victim must actively view the malicious content, so this is not a drive-by remote compromise. The scope change (S:C) and the GHSA impact note (targeting other admins/editors for session hijacking, unauthorized actions, or privilege escalation) are what give it real teeth: a lower-trust content editor could escalate against a higher-trust admin. Exploitation maturity is mixed - a working POC is publicly available (publicly available exploit code exists), which raises the practical likelihood of use, but the EPSS score is low at 0.28% (19th percentile) and the CVE is NOT in CISA KEV (no public exploit identified as actively exploited). The low EPSS is consistent with the high privilege prerequisite: this requires insider/compromised-account access, so widespread automated exploitation is unlikely. No signals conflict materially; the authenticated, user-interaction-gated nature is corroborated across the CVSS vector and the vendor advisory text. |
| Exploit ScenarioDerived | An attacker who controls a Bagisto admin or content-editor account (e.g., a lower-privileged editor or a compromised account) creates an HTML file containing embedded JavaScript, renames it with a .png extension, and uploads it through TinyMCE; the backend detects the HTML/JS content and converts the file back to .html. When another admin or editor later opens that file in their browser, the script executes in their authenticated session, enabling session hijacking or actions on their behalf. A public POC demonstrating the .png-to-.html conversion bypass exists. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Stored cross-site scripting in Bagisto 2.3.7's TinyMCE image-upload feature allows a highly privileged admin-panel user to upload a file named with a .png extension whose contents are HTML/JavaScript; the backend's content sniffing then re-saves it as .html, so the script executes in the browser of any admin or editor who opens it, enabling session hijacking or unauthorized actions against those privileged accounts. Exploitation requires an authenticated account with upload/content privileges (PR:H) plus a victim who actively views the file (UI:R), so it is not remotely triggerable against a default, unattended installation; publicly available exploit code exists, EPSS is 0.28% (19th percentile), and there is no CISA KEV listing. The issue is fixed in Bagisto 2.3.8.
RemediationAI
Vendor-released patch: upgrade to Bagisto 2.3.8, which contains the upstream fix commit 7b6b1dd639a14e7053bb82ef2f971c1f533fdfab (https://github.com/bagisto/bagisto/commit/7b6b1dd639a14e7053bb82ef2f971c1f533fdfab), as documented in advisory GHSA-67px-r26w-598x (https://github.com/bagisto/bagisto/security/advisories/GHSA-67px-r26w-598x). If immediate upgrade is not possible, the highest-value compensating control is to change how stored uploads are served so that anything not an image is never rendered as HTML - serve the upload directory with X-Content-Type-Options: nosniff and Content-Disposition: attachment, or from a separate cookieless domain, which neutralizes the auto-renamed .html payload at the cost of breaking inline preview of legitimate non-image assets. Alternatively, disable or restrict the TinyMCE image-upload endpoint to a small set of trusted administrators and re-validate file magic bytes against an image allowlist; the trade-off is reduced editorial workflow flexibility. Adding a restrictive Content-Security-Policy to the admin panel (no inline/third-party script) also blunts payload execution but requires testing against TinyMCE and other admin JavaScript. Because exploitation requires an existing privileged account, auditing admin/editor accounts for unexpected .html files in upload directories and reviewing recent content uploads for indicators of compromise is advisable alongside patching.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in composer
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Bagisto is an open-source Laravel-based eCommerce platform (packaged as composer/bagisto/bagisto, tracked in CPE as cpe:2.3:a:webkul:bagisto:2.3.7). Its rich-content editor is TinyMCE, which routes image uploads through a backend handler that is supposed to reject HTML files. The root cause is CWE-80 (improper neutralization of script-related HTML tags in a web page - basic XSS): instead of rejecting or sanitizing a file whose declared extension is .png but whose bytes sniff as HTML or JavaScript, the handler 'corrects' the extension to .html and stores the attacker-controlled markup in a web-reachable location. Because the file is then served and rendered as HTML in the Bagisto origin, embedded JavaScript runs in the session context of any privileged user who opens the link - a stored/persistent XSS pattern rather than a reflected one. The CVSS scope change (S:C) reflects that the payload executes against other admin/editor accounts rather than the uploading account, and the PR:H/UI:R metrics reflect that the attacker must already hold content-upload rights and must persuade a second privileged user to view the file. No underlying framework flaw is implicated; the defect is the content-sniffing decision to serve attacker-supplied markup as active HTML.
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
AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N
Upload requires a high-privilege account (PR:H) and a victim must view the file (UI:R); script runs in another user's session (S:C) with limited C/I impact and no availability effect.
Primary rating from NVD.
CVSS VectorNVD
DescriptionNVD
Bagisto is an open source laravel eCommerce platform. In Bagisto v2.3.7, the TinyMCE image upload functionality allows an attacker with sufficient privileges (e.g. admin) to upload a crafted HTML file containing embedded JavaScript. When viewed, the malicious code executes in the context of the admin/user’s browser. This vulnerability is fixed in 2.3.8.
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.
Affected Products (CPE)NVD
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
EPSS
GitHub
Exploit-DB