Skip to main content

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

CVE-2023-26487

Severity Medium
Score 6.1/10

Summary

Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs."lassoAppend" function accepts 3 arguments and internally invokes "push" function on the 1st argument specifying array consisting of 2nd and 3rd arguments as "push" call argument. The type of the 1st argument is supposed to be an array, but it's not enforced. This makes it possible to specify any object with a "push" function as the 1st argument, "push" function can be set to any function that can be access via "event.view" (no all such functions can be exploited due to invalid context or signature, but some can, e.g. "console.log"). The issue is that"lassoAppend" doesn't enforce proper types of its arguments. This issue opens various XSS vectors, but exact impact and severity depends on the environment (e.g. Core JS "setImmediate" polyfill basically allows "eval"-like functionality). The affected versions are vega prior to 5.23.0 and vega-functions prior to 5.13.1.

  • LOW
  • NETWORK
  • LOW
  • CHANGED
  • REQUIRED
  • NONE
  • LOW
  • NONE

CWE-79 - Cross Site Scripting

Cross-Site Scripting, commonly referred to as XSS, is the most dominant class of vulnerabilities. It allows an attacker to inject malicious code into a pregnable web application and victimize its users. The exploitation of such a weakness can cause severe issues such as account takeover, and sensitive data exfiltration. Because of the prevalence of XSS vulnerabilities and their high rate of exploitation, it has remained in the OWASP top 10 vulnerabilities for years.

Advisory Timeline

  • Published