Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Krayin CRM (PR:L)
-
DeliveryInject Vue template expression into web form description
-
ExploitPayload stored server-side
-
ExecutionVictim opens affected web form (UI:P)
-
PersistVue compiler evaluates prototype-chain expression
-
ImpactAttacker JavaScript executes in app origin
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 an authenticated Krayin CRM account (PR:L) with the ability to create or modify a web form, and specifically to control the web form's description field, which is rendered through the Vue.js template compiler without sanitizing double-brace expressions. The payload only fires when another user passively views the affected web form (UI:P), so it is a stored/second-order attack rather than a self-contained remote exploit. Limiting factors: an authenticated foothold with web-form editing rights is needed, a separate victim must render the form, and impact is confined to client-side JavaScript execution in the application origin (no direct server-side data compromise). Applies to Krayin CRM versions through 2.2.6. |
| Impact | This is a stored client-side template injection (Vue.js template injection resolving to XSS, CWE-79) in Krayin CRM through 2.2.6, reported by VulnCheck. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N, base 5.1) indicates a network-reachable but authenticated (PR:L) attack that requires passive victim interaction (UI:P) and yields no direct confidentiality/integrity/availability impact to the vulnerable system itself, only limited subsequent-system impact (SC:L/SI:L) - consistent with script execution in a victim's browser rather than server compromise. No EPSS score, no CISA KEV listing, and no public exploit code are present in the supplied intelligence, so exploitation status is 'no public exploit identified at time of analysis.' The signals are internally consistent: a medium-severity, authenticated stored-XSS in a niche open-source CRM. This is a genuine but moderate-priority issue - real because the payload persists and fires for every viewer of the affected web form, but bounded because it requires an authenticated foothold to plant the payload and the impact is client-side (session/action abuse in the app origin), not server RCE. No key signals are missing beyond the absence of EPSS/KEV/POC data, which limits confidence on real-world exploitation likelihood. |
| Exploit ScenarioDerived | An authenticated Krayin CRM user with permission to create or edit a web form embeds Vue.js double-brace template syntax (e.g. an expression traversing the prototype chain to the Function constructor) into the web form description field. When any other user - including higher-privileged staff - views that web form, the Vue template compiler evaluates the expression and runs the attacker's JavaScript in the application origin, enabling session token theft, CSRF-style actions, or UI manipulation. No public proof-of-concept exploit is identified in the supplied data. |
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 allows an authenticated user with rights to create or edit web forms to plant Vue.js double-brace template expressions in the form description field, which the Vue template compiler renders without sanitization and which ultimately resolves to arbitrary JavaScript execution in the application origin for any user who views the crafted form. Exploitation requires an authenticated foothold (CVSS:4.0 PR:L / CVSS:3.1 PR:L) plus a separate victim passively rendering the form (UI:P / UI:R), so it is a stored, second-order attack rather than a self-contained remote exploit; impact is confined to client-side script execution in other users' sessions (SC:L/SI:L) with no direct server-side compromise. Severity is moderate - CVSS:4.0 5.1 and the independent assessment's CVSS:3.1 5.1 - and no public exploit code was identified at time of analysis; the issue was reported by VulnCheck and is documented in a public CVE disclosure repository and vendor advisory.
RemediationAI
No vendor-released patch version is identified in the available intelligence; Krayin CRM 2.2.6 is the last known affected release, so administrators should track the VulnCheck advisory (https://www.vulncheck.com/advisories/krayin-crm-stored-template-injection-xss-via-web-form-description) and the disclosure repository (https://github.com/aaronamran/CVE-Disclosures/tree/main/CVE-2026/CVE-2026-48541) for an upstream fix and apply it as soon as a patched release or commit is published. Until then, the highest-value compensating control is to restrict who can create or edit web forms - tighten roles and permissions so that only a small, trusted set of administrators holds form-authoring rights, which removes the PR:L foothold the attack depends on, at the cost of slower form workflows for other staff. Equally effective is to prevent untrusted text from reaching the Vue compiler: strip or HTML-encode double-brace sequences ({{ }}) and other interpolation delimiters from the web form description before it is persisted or rendered - for example with an output-encoding/sanitization layer or an input filter on that field - recognizing that this is a code change that must survive upgrades. If forms cannot be trusted, disable or unpublish the web form feature, or restrict browsing of stored web forms to the author, accepting the loss of shared-form functionality. As defense in depth, deploy a Content-Security-Policy that blocks inline and eval-based script execution, which would break the Function-constructor payload but requires careful tuning to avoid breaking legitimate CRM front-end code. Finally, audit existing web form records for embedded {{ }} expressions and purge any that are found, since a stored payload will continue to fire until the record itself is removed.
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
The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation) manifesting specifically as client-side template injection (CSTI). Krayin CRM is an open-source Laravel-based CRM, tracked in the affected CPE as cpe:2.3:a:krayin:laravel-crm:*:*:*:*:*:*:*:* (all versions, i.e. through 2.2.6). The web form builder stores an operator-supplied description that is later rendered inside a Vue.js-rendered view; because the description passes through the Vue template compiler, user-controlled text containing double-brace interpolation syntax is compiled as a template expression rather than displayed as literal text. From there, an attacker can walk the JavaScript prototype chain (for example via constructor/constructor-constructor style traversal) to reach the Function constructor and build executable code, giving script execution in the origin of the application rather than a dead-end string interpolation. This is distinct from a conventional reflected XSS: the payload is persisted in the CRM's stored web form record and detonates for every subsequent viewer, and the injection point is the template engine rather than raw HTML output encoding.
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
Network-reachable stored XSS needing an authenticated form editor (PR:L) and a victim to view the form (UI:R); execution in another user's browser context crosses a trust boundary (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 web form description field. Attackers can craft a web form description 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 web form.
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-86448
GHSA-vgpf-4rhc-gr38
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB