Overview
The /projects/upload-example endpoint renders a labeling config passed in the label_config query parameter. It accepts a GET request and renders inline task data from the config as HTML without sanitizing it.
An attacker embeds script in the task data, URL-encodes the config, and sends the link to a victim. The script runs when the page loads. Label Studio ships a Content Security Policy, but only in report-only mode, so it does not block execution. Label Studio 1.16.0 fixes the issue.
Affected products
- Label Studio before 1.16.0
Disclosure timeline
- 13 Feb 2025
- HumanSignal releases Label Studio 1.16.0; /projects/upload-example no longer accepts GET
- 14 Feb 2025
- GitHub advisory and CVE-2025-25296 published