Skip to content
Heist/ feed
Back to feed
Medium

Vega `scale` expression function cross site scripting

Type: advisorySources: OSV

Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. The Vega `scale` expression function has the ability to call arbitrary functions with a single controlled argument. The scale expression function passes a user supplied argument group to getScale, which is then used as if it were an internal context. The context.scales[name].value is accessed from group and called as a function back in scale. This can be exploited to escape the Vega expression sandbox in order to execute arbitrary JavaScript. This issue has been fixed in version 5.13.1.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2023-26486
Confirmed fixed CVEs
Not specified
Updated in this feed
7 Nov 2026, 01:17 UTC · Revision 1

Source evidence

Vega `scale` expression function cross site scripting

core-osv · Original source

Published 3 Mar 2023, 23:48 UTC

Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. The Vega `scale` expression function has the ability to call arbitrary functions with a single controlled argument. The scale expression function passes a user supplied argument group to getScale, which is then used as if it were an internal context. The context.scales[name].value is accessed from group and called as a function back in scale. This can be exploited to escape the Vega expression sandbox in order to execute arbitrary JavaScript. This issue has been fixed in version 5.13.1.

osv:CVE-2023-26486
Complete source record
{
  "id": "3169c3bf648f8eaf9c72363f7f9f253215166c5bf14dbfe69d55dce4eaecd2d5",
  "url": "https://osv.dev/vulnerability/CVE-2023-26486",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Vega `scale` expression function cross site scripting",
    "summary": "Vega is a visualization grammar, a declarative format for creating, saving, and sharing interactive visualization designs. The Vega `scale` expression function has the ability to call arbitrary functions with a single controlled argument. The scale expression function passes a user supplied argument group to getScale, which is then used as if it were an internal context. The context.scales[name].value is accessed from group and called as a function back in scale. This can be exploited to escape the Vega expression sandbox in order to execute arbitrary JavaScript. This issue has been fixed in version 5.13.1.",
    "evidence": "osv:CVE-2023-26486",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2023-26486",
      "aliases": [
        "CVE-2023-26486",
        "GHSA-4vq7-882g-wcg4"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/vega/vega",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "fb1092f6b931d450f9c210b67ae4752bd3dd461b"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "fixed": "fb1092f6b931d450f9c210b67ae4752bd3dd461b"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v5.23.0"
                  },
                  {
                    "cpe": "cpe:2.3:a:vega_project:vega:*:*:*:*:*:node.js:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "5.23.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v5.22.1",
            "v5.22.0",
            "v5.21.0",
            "v5.20.1",
            "v5.20.2",
            "v5.20.0",
            "v5.19.1",
            "v5.19.0",
            "v5.18.0",
            "v5.17.3",
            "v5.17.2",
            "v5.17.1",
            "v5.17.0",
            "v5.16.1",
            "v5.16.0",
            "v5.15.0",
            "v5.14.0",
            "v5.13.0",
            "v5.12.3",
            "v5.12.2",
            "v5.12.1",
            "v5.12.0",
            "v5.11.1",
            "v5.11.0",
            "v5.10.1",
            "v5.10.0",
            "v5.9.2",
            "v5.9.1",
            "v5.9.0",
            "v5.8.1",
            "v5.8.0",
            "v5.7.3",
            "v5.7.2",
            "v5.7.1",
            "v5.7.0",
            "v5.6.0",
            "v5.5.3",
            "v5.5.2",
            "v5.5.1",
            "v5.5.0",
            "v5.4.1",
            "v4.5.1",
            "v5.4.0",
            "v5.3.5",
            "v5.3.4",
            "v5.3.3",
            "v5.3.2",
            "v5.3.1",
            "v5.3.0",
            "v5.2.0",
            "v5.1.0",
            "v5.0.0",
            "v5.0.0-rc5",
            "v5.0.0-rc4",
            "v5.0.0-rc3",
            "v5.0.0-rc2",
            "v5.0.0-rc1",
            "v4.4.0",
            "v4.3.0",
            "v4.2.0",
            "v4.1.0",
            "v4.0.0",
            "v4.0.0-rc.3",
            "v4.0.0-rc.1",
            "v3.3.1",
            "v3.3.0",
            "v3.2.1",
            "v3.2.0",
            "v3.1.0",
            "v3.0.10",
            "v3.0.9",
            "v3.0.8",
            "v3.0.7",
            "v3.0.6",
            "v3.0.5",
            "v3.0.4",
            "v3.0.3",
            "v3.0.2",
            "v3.0.1",
            "v3.0.0",
            "v3.0.0-rc7",
            "v3.0.0-rc6",
            "v3.0.0-rc5",
            "v3.0.0-rc4",
            "v3.0.0-rc3",
            "v3.0.0-rc2",
            "v3.0.0-rc1",
            "v3.0.0-beta.39",
            "v3.0.0-beta.38",
            "v3.0.0-beta.37",
            "v3.0.0-beta.36",
            "v3.0.0-beta.35",
            "v3.0.0-beta.34",
            "v3.0.0-beta.33",
            "v3.0.0-beta.32",
            "v3.0.0-beta.31",
            "v3.0.0-beta.30",
            "v3.0.0-beta.29",
            "v3.0.0-beta.28",
            "v3.0.0-beta.27",
            "v3.0.0-beta.26",
            "v3.0.0-beta.25",
            "v3.0.0-beta.24",
            "v3.0.0-beta.23",
            "v3.0.0-beta.22",
            "v3.0.0-beta.21",
            "v3.0.0-beta.20",
            "v3.0.0-beta.19",
            "v3.0.0-beta.18",
            "v3.0.0-beta.17",
            "v3.0.0-beta.16",
            "v3.0.0-beta.15",
            "v3.0.0-beta.14",
            "v3.0.0-beta.13",
            "v3.0.0-beta.12",
            "v3.0.0-beta.11",
            "v3.0.0-beta.10",
            "v3.0.0-beta.8",
            "v3.0.0-beta.7",
            "v3.0.0-beta.6",
            "v3.0.0-beta.4",
            "v3.0.0-beta.3",
            "v3.0.0-beta.2",
            "v1.5.4",
            "v1.5.1",
            "v1.5.0",
            "v1.4.3",
            "v1.4.2",
            "v1.4.1",
            "v1.4.0",
            "v1.3.4",
            "v1.3.3",
            "v1.3.2",
            "v1.3.1",
            "v1.3.0",
            "v1.2.0",
            "v1.1.0",
            "v1.0.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2023-26486.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:48.730781642Z",
      "provider": "osv",
      "references": [
        "https://github.com/vega/vega/releases/tag/v5.23.0",
        "https://github.dev/vega/vega/blob/72b9b3bbf912212e7879b6acaccc84aff969ef1c/packages/vega-functions/src/functions/scale.js#L36-L37",
        "https://github.dev/vega/vega/blob/72b9b3bbf912212e7879b6acaccc84aff969ef1c/packages/vega-functions/src/scales.js#L6",
        "https://vega.github.io/editor/#/url/vega/N4IgJAzgxgFgpgWwIYgFwhgF0wBwqgegIDc4BzJAOjIEtMYBXAI0poHsDp5kTykSArJQBWENgDsQAGhAATJJhSoA2qHFIEcNCAAaAZT0ACAApsAwtJDEkAGwZwIaZQEYAujMwAnJOIgAzNk8EJ1BMAE8cLXQAoIYbFBkkR3QNNgZxTEs4AA8cT21oWzgACgByP3SoUqlDcTibGsNgKAlMHMxUJsKbB07gCvEoPus7OE7ukvLK6sNSuBHihTYmYoAdEABNAHVsmyhxAEU2AFk9AGsAdnWASmuZ5tb2von8JoGhppH7TuVXShbfF4GFBMIF-hIIECQYEAL5wmHXeEIkAw1yomFAA",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/26xxx/CVE-2023-26486.json",
        "https://github.com/vega/vega/security/advisories/GHSA-4vq7-882g-wcg4",
        "https://nvd.nist.gov/vuln/detail/CVE-2023-26486"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "unresolved_ranges": [
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "fixed": "5.13.1"
                  }
                ],
                "source": "AFFECTED_FIELD",
                "strategy": "StringRangeExpression"
              }
            ]
          },
          {
            "extracted_events": [
              {
                "range": [
                  {
                    "fixed": "5.13.1"
                  }
                ],
                "source": "DESCRIPTION"
              }
            ]
          }
        ],
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/26xxx/CVE-2023-26486.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2023-26486",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 516917,
  "published_at": "2023-03-03T23:48:41.382+00:00"
}