CVE-2025-25296: Label Studio: reflected XSS via label_config param

GHSA-wpq5-3366-mqw4 MEDIUM PoC AVAILABLE CISA: TRACK*
Published February 14, 2025
CISO Take

Upgrade Label Studio to 1.16.0 immediately on any instance accessible to annotation teams. This reflected XSS requires zero privileges—an attacker sends a crafted URL to an annotator, steals their session, and gains full access to annotation projects and training datasets. Organizations handling sensitive or proprietary ML training data via Label Studio should treat this as high operational priority despite the medium CVSS score.

Risk Assessment

CVSS 6.1 understates operational risk in ML pipeline contexts. Label Studio routinely handles proprietary training datasets, PII, and sensitive labeling work. The CSP is configured in report-only mode—effectively disabled—removing a critical defense layer. No authentication is required; the only barrier is user interaction with a malicious link. Organizations with internet-exposed or multi-user Label Studio deployments face meaningful risk of session hijacking and training data exfiltration.

Affected Systems

Package Ecosystem Vulnerable Range Patched
label-studio pip < 1.16.0 1.16.0
27.2K 1 dependents Pushed 8d ago 71% patched ~145d to patch Full package profile →

Do you use label-studio? You're affected.

Severity & Risk

CVSS 3.1
6.1 / 10
EPSS
20.0%
chance of exploitation in 30 days
Higher than 96% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Trivial
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
EPSS exploit prediction: 20%
Composite signal derived from CISA KEV, CISA SSVC, EPSS, trickest/cve, and Nuclei templates.

Attack Surface

AV AC PR UI S C I A
AV Network
AC Low
PR None
UI Required
S Changed
C Low
I Low
A None

Recommended Action

6 steps
  1. Patch: Upgrade to Label Studio >= 1.16.0 immediately.

  2. Workaround if patching is delayed: block external access to /projects/upload-example via WAF or reverse proxy rule rejecting GET requests with label_config parameters.

  3. Enable CSP enforcement mode—remove the report-only flag from the Content-Security-Policy header.

  4. Rotate all active session tokens on exposed instances.

  5. Audit web server logs for anomalous GET requests to /projects/upload-example containing URL-encoded XML payloads.

  6. Restrict Label Studio to VPN-only access if internet-exposed.

CISA SSVC Assessment

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

Classification

Compliance Impact

This CVE is relevant to:

EU AI Act
Art.15 - Accuracy, robustness and cybersecurity
ISO 42001
A.6.2.6 - AI system security
NIST AI RMF
MANAGE-2.2 - Sustain value of deployed AI systems and manage residual negative risk
OWASP LLM Top 10
LLM05:2025 - Insecure Output Handling

Frequently Asked Questions

What is CVE-2025-25296?

Upgrade Label Studio to 1.16.0 immediately on any instance accessible to annotation teams. This reflected XSS requires zero privileges—an attacker sends a crafted URL to an annotator, steals their session, and gains full access to annotation projects and training datasets. Organizations handling sensitive or proprietary ML training data via Label Studio should treat this as high operational priority despite the medium CVSS score.

Is CVE-2025-25296 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2025-25296, increasing the risk of exploitation.

How to fix CVE-2025-25296?

1. Patch: Upgrade to Label Studio >= 1.16.0 immediately. 2. Workaround if patching is delayed: block external access to /projects/upload-example via WAF or reverse proxy rule rejecting GET requests with label_config parameters. 3. Enable CSP enforcement mode—remove the report-only flag from the Content-Security-Policy header. 4. Rotate all active session tokens on exposed instances. 5. Audit web server logs for anomalous GET requests to /projects/upload-example containing URL-encoded XML payloads. 6. Restrict Label Studio to VPN-only access if internet-exposed.

What systems are affected by CVE-2025-25296?

This vulnerability affects the following AI/ML architecture patterns: training pipelines, data annotation workflows, ml data management.

What is the CVSS score for CVE-2025-25296?

CVE-2025-25296 has a CVSS v3.1 base score of 6.1 (MEDIUM). The EPSS exploitation probability is 20.05%.

Technical Details

NVD Description

## Description Label Studio's `/projects/upload-example` endpoint allows injection of arbitrary HTML through a `GET` request with an appropriately crafted `label_config` query parameter. By crafting a specially formatted XML label config with inline task data containing malicious HTML/JavaScript, an attacker can achieve Cross-Site Scripting (XSS). While the application has a Content Security Policy (CSP), it is only set in report-only mode, making it ineffective at preventing script execution. The vulnerability exists because the upload-example endpoint renders user-provided HTML content without proper sanitization on a GET request. This allows attackers to inject and execute arbitrary JavaScript in victims' browsers by getting them to visit a maliciously crafted URL. This is considered vulnerable because it enables attackers to execute JavaScript in victims' contexts, potentially allowing theft of sensitive data, session hijacking, or other malicious actions. ## Steps to reproduce 1. Create a malicious label config that includes an XSS payload in embedded task data: ```xml <View><!-- {"data": {"text": "<div><img src=x onerror=eval(atob(`YWxlcnQoIlhTUyIp`))></div>"}} --><HyperText name="text" value="$text"/></View> ``` 2. URL encode the payload and access the following URL: - http://app/projects/upload-example/?label_config=%3CView%3E%3C!--%20{%22data%22:%20{%22text%22:%20%22%3Cdiv%3E%3Cimg%20src=x%20onerror=eval(atob(`YWxlcnQoIlhTUyIp`))%3E%3C/div%3E%22}}%20--%3E%3CHyperText%20name=%22text%22%20value=%22$text%22/%3E%3C/View%3E When executed, the payload causes the application to render an HTML page containing an img tag that fails to load, triggering the onerror event handler which executes base64-decoded JavaScript, demonstrating successful XSS execution in the victim's browser. ## Mitigations - Enable the Content Security Policy in enforcement mode instead of report-only mode to actively block unauthorized script execution - Deprecate the `GET` behavior at the `example-config` endpoint since it's not used ## Impact The vulnerability requires no special privileges and can be exploited by getting a victim to visit a crafted URL. The impact is high as it allows arbitrary JavaScript execution in victims' browsers, potentially exposing sensitive data or enabling account takeover through session theft.

Exploitation Scenario

An adversary targeting an organization's ML training pipeline uses Shodan or Censys to identify exposed Label Studio instances. They craft a GET URL to /projects/upload-example with a label_config parameter containing a base64-encoded JavaScript payload embedded in an XML HyperText config. The URL is delivered via spearphishing email to a data annotator or ML engineer. When the target clicks the link, their browser renders the malicious HTML, executes the JavaScript payload, and exfiltrates the session cookie to an attacker-controlled server. The attacker uses the stolen session to access annotation projects, download training datasets, or inject poisoned labels—silently corrupting the ML model being trained without triggering any authentication alerts.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Timeline

Published
February 14, 2025
Last Modified
February 14, 2025
First Seen
March 24, 2026

Related Vulnerabilities