GHSA-mp7w-mhcv-673jMedium

Vega allows Cross-site Scripting via the vlSelectionTuples function

Published
February 14, 2025
Last Modified
February 14, 2025

🔗 CVE IDs covered (1)

📋 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:<argument>}], {fields:[{getter:<function>}]})

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]}"}]}

🎯 Affected products2

  • npm/vega:< 5.26.0
  • npm/vega-selections:< 5.4.2

🔗 References (5)