Impact
In vega
5.30.0 and lower, vega-functions
5.15.0 and lower , it was possible to call JavaScript functions from the Vega expression language that were not meant to be supported.
Patches
Patched in vega
5.31.0
/ vega-functions
5.16.0
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
- Run
vega
without vega.expressionInterpreter
. This mode is not the default as it is slower.
- Using the interpreter described in CSP safe mode (Content Security Policy) prevents arbitrary Javascript from running, so users of this mode are not affected by this vulnerability.
References
Reproduction of the error in Vega by @mattijn
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"signals": [
{
"name": "inject_alert",
"on": [
{
"events": [
{
"type": "mousedown",
"marktype": "rect",
"filter": ["scale(event.view.setTimeout, 'alert(\"alert\")')"]
}
],
"update": "datum"
}
]
}
],
"marks": [
{
"type": "rect",
"encode": {
"update": {
"x": {"value": 0},
"y": {"value": 0},
"width": {"value": 100},
"height": {"value": 100}
}
}
}
]
}
References
Impact
In
vega
5.30.0 and lower,vega-functions
5.15.0 and lower , it was possible to call JavaScript functions from the Vega expression language that were not meant to be supported.Patches
Patched in
vega
5.31.0
/vega-functions
5.16.0
Workarounds
Is there a way for users to fix or remediate the vulnerability without upgrading?
vega
withoutvega.expressionInterpreter
. This mode is not the default as it is slower.References
Reproduction of the error in Vega by @mattijn
References