CVE-2025-26619

6.1 MEDIUM

📋 TL;DR

This vulnerability allows attackers to execute arbitrary JavaScript functions through Vega's expression language, bypassing intended security restrictions. It affects users of Vega visualization library versions 5.30.0 and lower, and Vega-functions 5.15.0 and lower. The vulnerability enables cross-site scripting attacks when untrusted data is processed by vulnerable Vega instances.

💻 Affected Systems

Products:
  • vega
  • vega-functions
Versions: vega <= 5.30.0, vega-functions <= 5.15.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Applications using Vega for data visualization with untrusted input are vulnerable. CSP safe mode users are not affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of web application security leading to data theft, session hijacking, or malware distribution through arbitrary JavaScript execution in user browsers.

🟠

Likely Case

Cross-site scripting (XSS) attacks where attackers inject malicious scripts that execute in victims' browsers, potentially stealing credentials or session cookies.

🟢

If Mitigated

Limited impact with proper input validation and output encoding, though the vulnerability still exists at the library level.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability allows calling unsupported JavaScript functions through Vega expressions, making exploitation straightforward for attackers with access to input channels.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: vega 5.31.0, vega-functions 5.16.0

Vendor Advisory: https://github.com/vega/vega/security/advisories/GHSA-rcw3-wmx7-cphr

Restart Required: No

Instructions:

1. Update package.json to use vega >= 5.31.0 and vega-functions >= 5.16.0. 2. Run npm update vega vega-functions. 3. Rebuild and redeploy your application.

🔧 Temporary Workarounds

Disable expression interpreter

all

Run Vega without vega.expressionInterpreter to prevent the vulnerability, though this reduces performance.

Configure Vega to run without expression interpreter in your application code

Enable CSP safe mode

all

Use Content Security Policy interpreter mode which prevents arbitrary JavaScript execution.

Configure Vega to use CSP safe mode interpreter

🧯 If You Can't Patch

  • Implement strict input validation and sanitization for all data processed by Vega
  • Deploy web application firewall (WAF) rules to detect and block XSS attempts

🔍 How to Verify

Check if Vulnerable:

Check package.json or node_modules for vega version <= 5.30.0 or vega-functions <= 5.15.0

Check Version:

npm list vega vega-functions

Verify Fix Applied:

Confirm vega >= 5.31.0 and vega-functions >= 5.16.0 are installed

📡 Detection & Monitoring

Log Indicators:

  • Unusual JavaScript function calls in Vega expression logs
  • Error messages related to expression evaluation

Network Indicators:

  • Suspicious data payloads containing JavaScript functions sent to Vega endpoints

SIEM Query:

source="application_logs" AND ("vega.expression" OR "expressionInterpreter") AND ("eval" OR "Function" OR suspicious_function_names)

🔗 References

📤 Share & Export