Skip to main content

Sharp CMS CVE-2025-62798

MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2025-10-28 security-advisories@github.com
5.4
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Obtain low-privilege Sharp account
  2. Delivery
    Store Vue '{{ }}' payload in text field
  3. Exploit
    Admin opens SharpShowTextField show view
  4. Execution
    Vue evaluates expression in browser
  5. Impact
    Execute 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).

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

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

composer code16/sharp fix: 9.11.1

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 &lcub;&lcub; and &rcub;&rcub;, 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

Vendor (github) PRIMARY 5.4 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

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.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

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

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Low
niche open-source admin CMS for Laravel, limited deployment 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2017-16894 HIGH POC
7.5 Nov 20

In Laravel framework through 5.5.21, remote attackers can obtain sensitive information (such as externally usable passwo

CVE-2025-54068 CRITICAL POC
9.8 Jul 17

Laravel Livewire v3 through v3.6.3 contains a critical remote code execution vulnerability (CVE-2025-54068, CVSS 9.8) th

CVE-2025-53833 CRITICAL POC
10.0 Jul 14

LaRecipe versions prior to 2.8.1 contain a Server-Side Template Injection (SSTI) vulnerability that can lead to Remote C

CVE-2026-28289 CRITICAL POC
10.0 Mar 03

File upload bypass in FreeScout 1.8.206 — patch bypass for CVE-2026-27636. PoC and patch available. CVSS 10.0.

CVE-2026-27636 HIGH POC
8.8 Feb 25

Remote code execution in FreeScout prior to version 1.8.206 allows authenticated users to upload `.htaccess` files that

CVE-2018-15133 HIGH POC
8.1 Aug 09

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

CVE-2025-70841 CRITICAL POC
10.0 Feb 03

Dokans SaaS e-commerce platform v3.9.2 has a CVSS 10.0 authentication bypass allowing unauthenticated attackers to obtai

CVE-2026-27637 CRITICAL POC
9.8 Feb 25

Predictable password reset tokens in FreeScout help desk before 1.8.206. Weak random number generation allows attackers

CVE-2026-21448 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform before 2.3.10 is vulnerable to server-side template injection (SSTI) through customer address

CVE-2026-21446 CRITICAL POC
9.8 Jan 02

Bagisto eCommerce platform (2.3 branch before 2.3.10) leaves installation API routes active after setup, allowing unauth

CVE-2022-2870 CRITICAL POC
9.8 Aug 17

A vulnerability was found in laravel 5.1 and classified as problematic. Rated critical severity (CVSS 9.8), this vulnera

CVE-2026-114509 CRITICAL POC
9.2 Oct 21

Laravel TokenGuard authentication bypass is a genuine high-priority issue, not an inflated CVSS score: unauthenticated a

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