Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged CRM user
-
DeliveryInject Vue template expression into product name
-
ExploitPayload stored in product record
-
ExecutionHigher-privileged user views product
-
PersistTemplate compiler evaluates Function constructor
-
ImpactArbitrary JS runs in app origin, hijack session
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 | Requires a valid authenticated CRM account with permission to create or edit products (PR:L), and exploitation completes only when another user opens the affected product record (UI:P/passive). The specific trigger is the product name field, whose value reaches the Vue.js client-side template compiler unescaped, allowing double-brace template expressions to be evaluated; deployments are affected in default configuration up to and including Krayin CRM 2.2.6. Limiting factors: attacker must first authenticate, impact is confined to the browser/app origin of viewing users, and there is no direct server-side compromise or availability impact. |
| Impact | This is a genuine but moderate-priority issue, not an overblown high-CVSS finding. The vendor CVSS 4.0 base is 5.1 (medium), and the vector is internally consistent with the description: network-reachable (AV:N), low complexity (AC:L), but requiring low-privilege authentication (PR:L) and passive victim interaction (UI:P), with only limited subsequent-system confidentiality/integrity impact (SC:L/SI:L) and no availability impact. There is no EPSS score, no CISA KEV listing, and no public POC referenced, so the exploitation status is 'no public exploit identified at time of analysis' - this is not evidence of active exploitation. The real elevator here is that it is STORED and client-side template injection escalating to arbitrary JS via the Function constructor, meaning the payload executes in the application origin for every user who views the poisoned product record, effectively giving a low-privileged CRM user a path to run script in higher-privileged users' sessions. That session-hijack/lateral-movement potential is more serious than the 5.1 base implies, but it remains gated behind valid authentication and a victim viewing the record, keeping it a medium concern rather than a critical one. Note a data caveat: one of the two references points to CVE-2026-48541 (an apparent sibling), not this CVE, so cross-reference against the VulnCheck advisory directly. |
| Exploit ScenarioDerived | A low-privileged authenticated Krayin CRM user creates or edits a product and sets its name to a Vue.js double-brace template expression that traverses the prototype chain to reach the Function constructor and run attacker JavaScript. When any other user - including an admin - opens that product record, the payload executes in the application origin, enabling session token theft, CSRF-style actions, or account takeover. No public exploit code is referenced, though VulnCheck's advisory documents the technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 24, 2026
Stored client-side template injection in Krayin CRM through 2.2.6 lets an authenticated user who can create or edit products plant Vue.js template expressions in the product name field, which are then compiled and executed as JavaScript in the browser of any other user who opens the affected product record. Exploitation requires a valid CRM account with product create/edit rights (PR:L) and completes only passively, when a victim views the record (UI:P); impact is confined to the victim's browser and the application's origin, with no server-side compromise or availability effect. No public exploit code was identified in the available intelligence at time of analysis, and there is no evidence of confirmed active exploitation, so this is a genuine but moderate-priority finding rather than a high-severity one.
RemediationAI
No vendor-released patch was identified in the available data at time of analysis, so remediation must be compensating. Restrict the create/edit product permission to the smallest possible set of trusted accounts, since the vulnerability requires an authenticated user with that capability - this reduces the pool of potential injectors but does not help if a low-privileged staff account is compromised. Add server-side input validation that rejects or strips Vue template delimiters ({{ }}, and by extension v-html/v-bind-style payload fragments) from the product name, or HTML-encode the name at the point of rendering so it never reaches the template compiler; the trade-off is that legitimate names containing braces would be altered or blocked outright. Where feasible, switch the affected view to pre-compiled Vue render functions (SFC build) instead of the runtime compiler, which removes the template-evaluation sink entirely. A Content-Security-Policy without 'unsafe-eval' would block the Function-constructor execution path and is a strong containment measure, but it will break any part of the UI that relies on Vue's runtime compiler, so test thoroughly before deploying. A WAF rule matching double-brace sequences in product creation requests provides defence in depth but is trivially bypassable with encoding tricks, and monitoring the referenced VulnCheck advisory and the researcher's CVE-Disclosures repository for an official fixed release is advisable before relying on long-term mitigations. In the meantime, note that stored payloads remain in existing product records until sanitized, so existing data should be audited and cleaned after any control is applied.
Affected VersionsENISA
Affected Packages
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
Krayin CRM is a Laravel-based open-source CRM whose admin interface is built with Vue.js and is tracked in CPE as cpe:2.3:a:krayin:laravel-crm. The underlying flaw is CWE-79 (improper neutralization of input during web page generation, i.e. cross-site scripting), manifesting specifically as client-side template injection: user-supplied product name data is rendered into a context that still passes through Vue's runtime template compiler instead of being escaped or pre-compiled into static render functions. Because Vue interprets double-brace delimiters ({{ ... }}) as expressions, an attacker-supplied name such as a template expression is evaluated in the victim's browser rather than displayed literally. The reported exploitation path uses prototype chain traversal to reach the JavaScript Function constructor from the template evaluation context, which converts the expression evaluation primitive into full arbitrary JavaScript execution within the application origin, with access to cookies, tokens, and any data the victim's session can reach. Because the payload is stored server-side in the product record, the injection is persistent and fires for every user who views that record.
Know when Krayin 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:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Authenticated low-priv attacker stores the payload (PR:L); stored XSS executes when victims view the record and crosses into their security context (S:C) with limited C/I impact and no availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Krayin CRM through 2.2.6 contains a stored client-side template injection vulnerability that allows authenticated attackers to execute arbitrary JavaScript in other users' browsers by injecting Vue.js template expressions into the product name field. Attackers can craft a product name containing double-brace template syntax that reaches the Vue template compiler, enabling prototype chain traversal to retrieve the Function constructor and execute attacker-supplied JavaScript in the application origin for every user who views the affected product record.
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.
Administrative account takeover in Krayin CRM (Laravel CRM) 2.2.4 lets unauthenticated remote attackers overwrite the pr
Blind SQL injection in Krayin CRM's leads DataGrid allows any authenticated user with leads access to exfiltrate the ent
Broken object-level authorization in Krayin CRM (Laravel CRM) through version 2.2.3 lets any authenticated user tamper w
Unauthenticated remote users can still reach the installer and admin-config-setup endpoints of Krayin CRM (laravel-crm)
Missing authentication on Krayin CRM's admin mail ingest route lets any remote, unauthenticated attacker POST crafted RF
Improper privilege management in Krayin laravel-crm up to and including 2.2.5 lets an authenticated back-office user who
An insecure direct object reference (IDOR) in Krayin laravel-crm through version 2.2.5 allows any authenticated user to
Improper access control in Krayin Laravel CRM through 2.2.5 allows an authenticated low-privilege admin user to access a
Cross-site scripting in Krayin Laravel CRM through 2.2.5 lets an authenticated user with access to the admin configurati
Stored cross-site scripting (XSS) in Krayin Laravel-CRM up to version 2.2 allows authenticated users with low privileges
Stored cross-site scripting in Krayin CRM (laravel-crm) up to and including version 2.2.5 lets an authenticated administ
Stored cross-site scripting in Krayin laravel-crm (versions up to and including 2.2.5) lets an authenticated user with a
EUVD-2026-86446
GHSA-2g68-2vxr-jc27
NVD
CVE.org
EPSS
Exploit-DB