☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-48540

CVE-2026-48540 Cross-Site Scripting in Krayin
📅 PUBLISHED: 2026-09-24 00:00 UTC 🔄 UPDATED: 2026-09-26 05:00 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.17%
👁️
0.17% probability
4.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1059.007
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: <= 2.2.6
CVSS VECTOR BREAKDOWN 5.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
5.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-48540 is a stored client-side template injection (CSTI) vulnerability in Krayin CRM through version 2.2.6. An authenticated attacker with low privileges can inject Vue.js template expressions (double-brace syntax) into the lead title field, which are persisted and later rendered by the Vue template compiler in other users' browsers. Successful exploitation results in arbitrary JavaScript execution in the application origin for every user who views the affected lead record, enabling session hijacking, data theft, and lateral movement within the CRM.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Krayin CRM is a Laravel-based open-source CRM application that uses Vue.js for client-side rendering. The vulnerability resides in the handling of the lead title field. According to the NVD description, the application fails to sanitize or escape user-supplied input before it is processed by the Vue template compiler. When a lead title contains double-brace template syntax (e.g., {{ }}), the Vue compiler interprets it as a template expression rather than literal text.

The specific mechanism described is prototype chain traversal to reach the Function constructor. In Vue.js, template expressions are compiled into JavaScript functions. By manipulating the expression to traverse the prototype chain (e.g., accessing constructor.constructor), an attacker can obtain a reference to the Function constructor, which allows execution of arbitrary JavaScript code. This is a classic client-side template injection (CSTI) technique, distinct from server-side template injection (SSTI) because the payload executes in the victim's browser rather than on the server.

The attack surface is the lead title field, which is likely rendered in lead list views, detail pages, or dashboards. The vulnerability is stored because the malicious title is saved to the database and then rendered for every user who views the affected lead record. The CVSS vector indicates network attack vector (AV:N), low attack complexity (AC:L), low privileges required (PR:L), and user interaction required (UI:R) — the victim must view the malicious lead. The scope is changed (S:C), meaning the vulnerability can impact resources beyond the vulnerable component, such as the victim's browser session and other application data.

The CWE classification is CWE-79 (Improper Neutralization of Input During Web Page Generation, commonly known as Cross-Site Scripting). However, the NVD description explicitly frames this as client-side template injection, which is a subtype of XSS where the payload exploits the client-side template engine rather than directly injecting HTML. No public PoC, exploit code, or Nuclei template is available as of this report. The vulnerability is unpatched in versions through 2.2.6.

Exploitation Scenarios

The following attack chain is inferred from the vulnerability class (stored client-side template injection) and the NVD description. No public PoC is available; specific implementation details beyond those in the description are not provided.

  1. Reconnaissance and target identification: An attacker identifies a target Krayin CRM instance (e.g., via Shodan or direct knowledge). The attacker must have valid credentials with permission to create or edit leads. This could be a low-privileged user, a compromised account, or an insider threat.

  2. Triggering the vulnerability: The attacker creates a new lead or edits an existing lead, entering a malicious payload into the lead title field. The payload contains Vue.js template syntax (double braces) that, when compiled, traverses the prototype chain to access the Function constructor. The exact payload syntax is not specified in the NVD description, but the goal is to execute arbitrary JavaScript.

  3. Payload execution: The malicious lead title is stored in the database. When any user (including administrators or other CRM users) views the lead — for example, in a lead list, detail view, or dashboard widget — the Vue template compiler processes the title. The template expression executes, retrieving the Function constructor and running attacker-supplied JavaScript in the context of the application origin.

  4. Post-exploitation impact: The executed JavaScript runs with the privileges of the victim user. The attacker can steal session cookies (if not HttpOnly), perform actions on behalf of the victim (CSRF-like), exfiltrate CRM data (leads, contacts, notes), inject further malicious content, or pivot to other users by creating additional malicious leads. Since the scope is changed (S:C), the attacker may affect resources beyond the CRM, such as other web applications on the same origin.

Impact Assessment

The CVSS v3.1 base score is 5.4 (Medium), with the vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N. This indicates:

  • Confidentiality (C:L): Limited impact. The attacker can read data accessible to the victim user, such as CRM records, but not necessarily all data on the system.
  • Integrity (I:L): Limited impact. The attacker can modify data or perform actions as the victim, but within the victim's permissions.
  • Availability (A:N): No impact. The vulnerability does not affect system availability.
  • Scope (S:C): Changed. The vulnerability in the CRM component can affect the victim's browser and potentially other applications on the same origin.

Business impact: A successful exploit allows an authenticated attacker to execute arbitrary JavaScript in the context of other users' sessions. This can lead to:

  • Theft of sensitive CRM data (customer PII, sales leads, communication history).
  • Account takeover of higher-privileged users (e.g., administrators) if they view the malicious lead.
  • Reputation damage and loss of customer trust.
  • Regulatory implications if customer data is exfiltrated (GDPR, CCPA, etc.).

The blast radius includes all users who view the affected lead record. Since the payload is stored, it persists until the lead is deleted or the vulnerability is patched. The attack does not require high privileges (PR:L) but does require user interaction (UI:R) — the victim must view the lead.

Detection Guidance

Sigma Rule

title: Krayin CRM Stored Client-Side Template Injection Attempt
id: 8f4b3c2a-1d5e-4f7b-9c8d-3a2b1c0d9e8f
status: experimental
description: Detects attempts to inject Vue.js template expressions into lead title fields in Krayin CRM.
author: Threat Intelligence
date: 2026-05-12
logsource:
  category: web
  product: krayin
detection:
  selection:
    http.method: 'POST'
    http.url|contains: '/admin/leads'
    http.body|contains:
      - '{{'
      - '}}'
      - 'constructor'
  condition: selection
falsepositives:
  - Legitimate use of double braces in lead titles (unlikely)
level: medium
tags:
  - attack.t1059.007
  - cve.2026.48540

YARA Rule

rule CVE_2026_48540_Krayin_CSTI
{
    meta:
        description = "Detects Vue.js template injection payloads targeting Krayin CRM lead titles"
        author = "Threat Intelligence"
        date = "2026-05-12"
        reference = "CVE-2026-48540"
        severity = "medium"
    strings:
        $vue1 = "{{" ascii wide
        $vue2 = "}}" ascii wide
        $proto1 = "constructor" ascii wide nocase
        $proto2 = "__proto__" ascii wide nocase
        $proto3 = "prototype" ascii wide nocase
    condition:
        uint16(0) == 0x3C3F or uint16(0) == 0x7B7B or
        (any of ($vue*) and any of ($proto*))
}

Suricata IDS Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2026-48540 Krayin CRM Stored CSTI Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/admin/leads"; http_uri; content:"{{"; http_client_body; content:"constructor"; http_client_body; classtype:web-application-attack; reference:cve,2026-48540; sid:10000001; rev:1;)

Elastic Detection

sequence by user.name with maxspan=5m
  [network where network.protocol == "http" and http.request.method == "POST"
   and url.path contains "/admin/leads"
   and http.request.body contains "{{" and http.request.body contains "constructor"]

Splunk SPL Query

index=web sourcetype=access_combined
| search method=POST uri_path="*/admin/leads*"
| rex field=form_data "(?<payload>\{\{.*?\}\})"
| where isnotnull(payload) AND (payload LIKE "%constructor%" OR payload LIKE "%__proto__%" OR payload LIKE "%prototype%")
| table _time, src_ip, user, uri_path, payload
| sort - _time

Wazuh OSSEC Rule

<group name="krayin,cve-2026-48540,">
  <rule id="100001" level="10">
    <decoded_as>json</decoded_as>
    <field name="http.method">POST</field>
    <field name="http.url">/admin/leads</field>
    <field name="http.body">\{\{</field>
    <field name="http.body">constructor</field>
    <description>CVE-2026-48540: Possible Krayin CRM stored client-side template injection attempt</description>
    <mitre>
      <id>T1059.007</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch confidence: 0/4 (UNPATCHED — no patch evidence from any tracked source).

  1. Immediate mitigations:

    • Restrict access to lead creation and editing to only trusted, highly privileged users.
    • Monitor for suspicious double-brace patterns in lead titles and other user-generated content.
    • Implement a Web Application Firewall (WAF) rule to block requests containing Vue.js template syntax in lead title fields.
    • Consider disabling or restricting the Vue.js template compiler in the Krayin frontend if feasible (however, this may break legitimate functionality).
    • Enable Content Security Policy (CSP) with strict directives to mitigate the impact of arbitrary JavaScript execution.
  2. Patch/upgrade steps:

    • No official patch is available for versions through 2.2.6. Monitor the Krayin CRM repository and vendor channels for an update.
    • As an interim measure, manually sanitize lead title input on the server side by escaping or rejecting double-brace sequences and prototype chain keywords before storage.
    • Alternatively, render lead titles using v-text or v-html with proper sanitization instead of allowing the template compiler to process user input.
  3. Long-term hardening:

    • Adopt a secure development lifecycle (SDLC) that includes client-side template injection testing.
    • Use a templating engine that does not evaluate user input as code (e.g., plain text rendering for user-supplied fields).
    • Conduct regular security assessments and penetration testing of CRM applications.
    • Educate developers about CSTI and XSS risks.

References

No known threat actor campaigns or exploit-in-the-wild evidence have been identified for this CVE as of the report date.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Krayin"
title:"Krayin"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-48540/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.