GitHub Advisoryadvisory · npm

GHSA-mp7w-mhcv-673j Vega allows Cross-site Scripting via the vlSelectionTuples function

MEDIUM Published 2025-02-14 Modified 2025-02-14 Official page ↗
Aliases
CVE-2025-25304
Ecosystem
npm
Packages
vega, vega-selections
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weaknesses
CWE-79
Reviewed
2025-02-14

Affected packages

• npm vega: < 5.26.0 → fixed in 5.26.0 • npm vega-selections: < 5.4.2 → fixed in 5.4.2

Description

Summary The `vlSelectionTuples` function can be used to call JavaScript functions, leading to XSS. Details `vlSelectionTuples` calls multiple functions that can be controlled by an attacker, including one call with an attacker-controlled argument. Example call: `vlSelectionTuples([{datum:}], {fields:[{getter:}]})` This can be used to call `Function()` with arbitrary JavaScript and the resulting function can be called with `vlSelectionTuples` or using a type coercion to call `toString` or `valueOf`. PoC ``` {"$schema":"https://vega.github.io/schema/vega/v5.json","signals":[{"name":"a","init":"+{valueOf:vlSelectionTuples([{datum:'alert(1)'}],{fields:[{getter:[].at.constructor}]})[0].values[0]}"}]} ```

Related

Alias · CVE (1)

  • CVE-2025-25304 Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. vulnerability

Weakness · CWE (1)

  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References