Executive brief
FiftyOne is an open-source platform for building and refining high-quality datasets. The application renders field descriptions stored in dataset schemas directly as HTML markup without sanitization. An attacker can inject malicious code into a field description that executes in the browser when another user opens the dataset, potentially allowing unauthorized access to local files and the FiftyOne server's dataset endpoints.
Technical details
This is a stored cross-site scripting (XSS) vulnerability in the FieldLabelAndInfo React component (app/packages/core/src/components/FieldLabelAndInfo/index.tsx). The vulnerable code passes unsanitized dataset field descriptions to React's dangerouslySetInnerHTML, rendering them as raw HTML. Other info values in the same component are properly escaped. The description string is persisted in the dataset schema database and travels with exported or published datasets. When a user opens a dataset from an untrusted source and hovers over a field, the injected markup executes in the browser's origin context shared with the FiftyOne server. The unauthenticated media route in the open-source server allows injected scripts to read local files and access dataset/operator endpoints as the viewing user.
Affected products
- Voxel51 FiftyOne
Timeline
- 2026-08-26: disclosed