Description
FiftyOne renders a dataset field's description as markup. The sidebar field-information component at app/packages/core/src/components/FieldLabelAndInfo/index.tsx passes the description string to React's dangerouslySetInnerHTML, and no layer between storage and render escapes or sanitises it; the neighbouring info values in the same component are rendered as React children and are escaped, so the description is the only raw path. A description is free-form text held in the dataset schema, so it persists in the database and travels with an exported or published dataset. Opening a dataset obtained from another party and hovering the field runs the stored markup in the application's origin. That origin is shared with the FiftyOne server, whose media route returns the contents of a caller-named absolute path and which is unauthenticated in the open-source server, so the injected script can read local files and reach the dataset and operator endpoints as the viewing user.
Published: 2026-08-26
Score: 7 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

FiftyOne stores a dataset field’s free‑form description in the database and renders it directly using React’s dangerouslySetInnerHTML without any sanitization. Because the description is the only unescaped input in the component, an attacker can inject malicious HTML and JavaScript that will execute in the victim’s browser when the field is viewed, violating confidentiality and integrity and giving the attacker the power to read server files or access internal endpoints. This flaw is a classic Stored XSS attack, classified as CWE‑79.

Affected Systems

The vulnerability affects all Voxel51 FiftyOne deployments running any version prior to 1.21.0. The dataset schema stores the description, so any exported or published dataset that contains malicious markup can propagate the flaw to other installations. In open‑source deployments, the unauthenticated media route allows the injected script to fetch server files, worsening the impact. All installations that expose the field‑information component are at risk.

Risk and Exploitability

The CVSS score of 7 indicates a high severity flaw. No EPSS data is available, and the issue is not listed in CISA’s KEV catalog. Exploitation requires that an attacker supply a malicious dataset or otherwise insert a bad description, which can then be shared with or accessed by a victim. Once the victim hovers over the field, the injected code runs in the context of the FiftyOne web application, and because the media route is unauthenticated in the community edition, the payload can read local files and contact internal service endpoints as the viewing user.

Generated by OpenCVE AI on August 26, 2026 at 17:59 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the FiftyOne installation to version 1.21.0 or later, which removes the unsafe rendering of field descriptions or incorporates proper sanitization.
  • If an immediate upgrade is not feasible, restrict access to the media route or enforce authentication so that the injected script cannot retrieve server files or internal data.
  • Sanitize or strip any HTML or JavaScript from dataset field descriptions before importing or exporting datasets; consider rejecting or editing descriptions that contain suspicious markup.

Generated by OpenCVE AI on August 26, 2026 at 17:59 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 26 Aug 2026 16:00:00 +0000

Type Values Removed Values Added
Description FiftyOne renders a dataset field's description as markup. The sidebar field-information component at app/packages/core/src/components/FieldLabelAndInfo/index.tsx passes the description string to React's dangerouslySetInnerHTML, and no layer between storage and render escapes or sanitises it; the neighbouring info values in the same component are rendered as React children and are escaped, so the description is the only raw path. A description is free-form text held in the dataset schema, so it persists in the database and travels with an exported or published dataset. Opening a dataset obtained from another party and hovering the field runs the stored markup in the application's origin. That origin is shared with the FiftyOne server, whose media route returns the contents of a caller-named absolute path and which is unauthenticated in the open-source server, so the injected script can read local files and reach the dataset and operator endpoints as the viewing user.
Title FiftyOne before 1.21.0 Stored Cross-Site Scripting via Unescaped Field Description
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:L/A:N'}

cvssV4_0

{'score': 7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-26T18:34:58.581Z

Reserved: 2026-08-26T10:43:43.492Z

Link: CVE-2026-80426

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-26T16:16:44.777

Modified: 2026-08-26T16:16:44.777

Link: CVE-2026-80426

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-26T18:00:04Z

Weaknesses
  • CWE-79

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