Sharp CMS CVE-2025-62798
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain low-privilege Sharp account
-
DeliveryStore Vue '{{ }}' payload in text field
-
ExploitAdmin opens SharpShowTextField show view
-
ExecutionVue evaluates expression in browser
-
ImpactExecute JS, steal session / act as admin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that attacker-influenced content be rendered through the SharpShowTextField component of Sharp < 9.11.1, where values wrapped in {{ }} were evaluated by Vue instead of being displayed as text. Limiting factors: the attacker needs an authenticated account or some writable data path that feeds a SharpShowTextField (PR:L), and a victim must load the affected show view for the payload to execute (UI:R). It is specific to the SharpShowTextField text-rendering path; versions at or above 9.11.1, which HTML-encode the braces and drop Vue-related attributes, are not affected. |
| Impact | This is a moderate-severity, authenticated stored XSS in the Sharp CMS for Laravel, and the signals are consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, score 5.4) correctly describes a network-reachable but privilege- and interaction-gated flaw: an attacker needs an account that can supply content rendered through SharpShowTextField (PR:L), and a victim admin must view that field (UI:R). The scope change (S:C) reflects script executing in the authenticated admin-panel browser context, distinct from the vulnerable server component. EPSS is low at 0.22% (11th percentile), there is no CISA KEV listing and no public exploit identified at time of analysis, so this is a real-but-not-urgent issue rather than a high-CVSS-but-low-real-risk mislabel - the modest CVSS and low EPSS agree. No SSVC data was provided. No signals conflict; the main caveat is that impact is partly contingent on how much untrusted content can actually reach a SharpShowTextField in a given deployment (e.g., whether a low-privilege role can set values an admin later reviews). |
| Exploit ScenarioDerived | An attacker with a low-privilege Sharp account (or who can otherwise influence data surfaced in the admin) stores a value containing Vue template syntax such as {{ constructor.constructor('fetch(...)')() }} or {{ Math.random() }} in a field rendered by SharpShowTextField. When an authenticated administrator opens the show view, Vue evaluates the expression and executes attacker-controlled JavaScript in the admin's session. No public exploit code is identified, but the GHSA advisory and the fix diff make the trigger trivially reproducible (UI:R on an authenticated victim). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 01, 2026
Stored cross-site scripting in Sharp CMS (the code16/sharp package for Laravel) before 9.11.1 lets an authenticated user with a writable data path inject Vue template expressions that execute JavaScript in a victim administrator's browser whenever the affected SharpShowTextField is displayed. The root cause is that values wrapped in {{ and }} rendered by the SharpShowTextField component were compiled and evaluated by Vue's runtime template compiler rather than being shown as literal text, so a payload such as {{ Math.random() }} executes on view. Per the CVSS vector (PR:L, UI:R), exploitation requires an authenticated account or another writable data path feeding the field, and a victim must load the show view; EPSS is low at 0.22% (11th percentile) and no public exploit code was identified at time of analysis, though the upstream fix commit and PR are public.
RemediationAI
Vendor-released patch: upgrade the code16/sharp Composer dependency to 9.11.1 or later (composer require code16/sharp:^9.11.1), which is the version that HTML-encodes {{ and }} via sanitizeForVue() and blocks Vue-specific attributes in the DOMPurify attributeNameCheck; details are in the GitHub advisory https://github.com/code16/sharp/security/advisories/GHSA-9f58-4465-23c7 and the fix PR https://github.com/code16/sharp/pull/654. If upgrading is not immediately possible, the vendor's stated workaround is to sanitize or encode any user-provided data containing {{ and }} before it is displayed in a SharpShowTextField - the trade-off is that this must be enforced on every write/read path that feeds the component and will cause legitimate literal braces in content to render as entities until the patch is applied. As a complementary compensating control with a usability cost, restrict who can create or edit fields rendered by SharpShowTextField (PR:L in the CVSS vector means an authenticated account is already required), since blocking untrusted write access removes the storage step of the stored XSS; injecting a Content-Security-Policy with restrictive script-src can reduce impact in the admin panel but may break other Sharp front-end behavior and does not fix the underlying templating flaw. Apply the sanitizer hardening in resources/js/utils/sanitize.ts as well if you maintain a fork, and treat any field content stored before patching as potentially tainted.
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
Sharp is a Laravel admin-panel/content-management package whose front end is built with Vue, and the flaw is classified as CWE-79 (improper neutralization of input during web page generation, i.e. XSS) in the SharpShowTextField rendering path. In affected versions, TextRenderer.vue built a dynamic Vue component via a computed property whose template string interpolated formattedContent, and the shared TemplateRenderer.vue compiled that string as a Vue template, so any {{ ... }} expression contained in stored field content was interpreted as a Vue interpolation and executed as JavaScript in the browser context rather than escaped. The upstream fix (PR #654) does two things: TemplateRenderer.vue now runs the template through a sanitizeForVue() helper that HTML-encodes opening and closing braces as {{ and }}, and the DOMPurify-based sanitize.ts helper restricts attributeNameCheck to reject Vue-specific attributes matching ^(v-)|:|@|
so directives such as v-bind/v-on shorthand can no longer be injected. TextRenderer.vue was refactored to pass formattedContent as a template prop into TemplateRenderer along with an explicit components map, removing the inline dynamically compiled template. Because the payload is stored server-side and executed when another user views the record, this is a stored (persistent) XSS rather than a reflected one.
Know when Laravel 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:L/UI:R/S:C/C:L/I:L/A:N
Authenticated content author (PR:L) stores a payload that runs only when an admin views the field (UI:R); script escapes to the browser context (S:C) with limited confidentiality/integrity impact and no availability loss.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Sharp is a content management framework built for Laravel as a package. Prior to 9.11.1, a Cross-Site Scripting (XSS) vulnerability was discovered in code16/sharp when rendering content using the SharpShowTextField component. In affected versions, expressions wrapped in {{ & }} were evaluated by Vue. This allowed attackers to inject arbitrary JavaScript or HTML that executes in the browser when the field is displayed. The issue has been fixed in v9.11.1 .
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.
In Laravel framework through 5.5.21, remote attackers can obtain sensitive information (such as externally usable passwo
Laravel Livewire v3 through v3.6.3 contains a critical remote code execution vulnerability (CVE-2025-54068, CVSS 9.8) th
LaRecipe versions prior to 2.8.1 contain a Server-Side Template Injection (SSTI) vulnerability that can lead to Remote C
File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.
Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that
In Laravel Framework through 5.5.40 and 5.6.x through 5.6.29, remote code execution might occur as a result of an unseri
Dokans SaaS e-commerce platform v3.9.2 has a CVSS 10.0 authentication bypass allowing unauthenticated attackers to obtai
Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers
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
A vulnerability was found in laravel 5.1 and classified as problematic. Rated critical severity (CVSS 9.8), this vulnera
Laravel TokenGuard authentication bypass is a genuine high-priority issue, not an inflated CVSS score: unauthenticated a
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB