Skip to main content

Label Studio EUVDEUVD-2026-115906

| CVE-2026-121561 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-11-03 VulnCheck GHSA-m949-r65c-x2m9
6.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged member
  2. Delivery
    Import task with internal data.image URL
  3. Exploit
    Request YOLO_WITH_IMAGES or COCO_WITH_IMAGES export
  4. Execution
    Server fetches internal URL unchecked
  5. Impact
    Read response body from export archive

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires an authenticated account of any role (PR:L) that can create a project and import a task - no admin action and no storage registration is needed, since data.image accepts an absolute attacker-supplied URL. The export MUST use an image-bearing format that forces resource download: YOLO_WITH_IMAGES, YOLO_OBB_WITH_IMAGES, or COCO_WITH_IMAGES; the advisory notes that plain YOLO even with download_resources=true downloads nothing because the format overrides the flag, so this is a concrete limiting factor. The core full-read SSRF needs no configuration toggles. The organization-owner token-disclosure variant additionally requires: spoofing the Host header so its netloc matches the task URL's netloc (possible because ALLOWED_HOSTS defaults to '*'), plus a header credential (a JWT obtained via POST /api/token/ then /api/token/refresh/) because spoofing Host invalidates session-cookie auth and returns 401. A further limiting factor on replay: the leaked token is only usable for authentication if legacy_api_tokens_enabled is turned on, which is off by default, so on a stock instance the disclosed token is inert unless/until an operator enables that setting.

Impact

This is a genuine but mid-tier priority, not a drop-everything emergency, and the signals are mostly consistent. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity flaw requiring an authenticated low-privileged account; impact is split as VC:L on Label Studio itself but SC:H on the internal systems reached through the SSRF, which is why this is a full-read (not blind) SSRF with a credible internal-exposure consequence. The vuln.today decision label is 'this_month' rather than act_now/emergency, and the input supplies no EPSS score and no CISA KEV listing, so there is no evidence of active exploitation or mass scanning. A detailed, vendor-tested reproduction exists in the GHSA advisory (full attack walkthrough against label-studio 1.23.0), which raises practical exploitability for any attacker who already holds an account. The one tension to flag explicitly: the SSRF itself reproduces on default settings and is a real confidentiality risk, but the headline credential-disclosure variant leaks the organization owner's long-lived API token to an attacker-chosen host on default settings YET that token is rejected at authentication while legacy_api_tokens_enabled stays at its default of False - so the leaked secret is currently inert and only becomes retroactively replayable if an operator later enables legacy tokens. Net: patch this month; treat the SSRF as the live risk and the token leak as a latent, configuration-gated one.

Exploit ScenarioDerived

An authenticated low-privileged member creates their own project, imports a task whose data.image points at an internal target (for example a cloud metadata endpoint or an internal admin interface), then requests an image-bearing export (YOLO_WITH_IMAGES or COCO_WITH_IMAGES); the Label Studio server fetches that URL with no destination validation and returns the raw response body inside the ZIP the attacker downloads. By additionally spoofing the Host header (ALLOWED_HOSTS defaults to '*') and authenticating with a JWT instead of a session cookie, the same export causes the organization owner's API token to be sent to the attacker's collector. A detailed, vendor-tested public PoC reference exists in the GHSA advisory; it is a step-by-step reproduction, not verified as packaged standalone exploit code.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Nov 03, 2026

Authenticated users of Label Studio can turn the export converter into a full-read SSRF primitive: importing a task whose data.image points at an internal service and then requesting an export in YOLO_WITH_IMAGES, YOLO_OBB_WITH_IMAGES or COCO_WITH_IMAGES makes the server issue an HTTP GET to the attacker-chosen URL and write the response bytes into the ZIP the same user downloads, giving back the body rather than a blind probe. The same request can additionally leak the organization owner's long-lived API token to an attacker-controlled host when the Host header is spoofed so its netloc matches the task URL (ALLOWED_HOSTS defaults to '*'), though on a stock instance that token is inert while legacy_api_tokens_enabled stays off. Affected are Label Studio before 1.23.2 and label-studio-sdk before 2.1.2; the GitHub advisory contains a step-by-step proof-of-concept reproduction, and the issue is not listed in CISA KEV, so this is a genuine but mid-tier, this-month priority rather than an emergency.

RemediationAI

Vendor-released patch: upgrade Label Studio to 1.23.2 and label-studio-sdk to 2.1.2 (fix commits df96d79183156e556d91825d15fa7721f1145e1a and c20c899aaaa302740dacd46a47e5774bb677561f, advisory GHSA-6437-7wc6-gmx5). Note that the new converter_http_session() returns an SSRF-safe session only when SSRF_PROTECTION_ENABLED is enabled, and get_export_hostname() returns None whenever ALLOWED_HOSTS still contains '*' and DOMAIN_FROM_REQUEST is false - so after patching, enable SSRF_PROTECTION_ENABLED and pin ALLOWED_HOSTS (or set HOSTNAME / DOMAIN_FROM_REQUEST behind a proxy) or the export path keeps using plain requests and the token comparison keeps trusting a Host header, at the cost that the converter will skip media it would otherwise fetch from Label Studio's own address, which can leave images out of exports on self-hosted installs whose own hostname resolves to a private address. Keep legacy_api_tokens_enabled at its default of False, since enabling it retroactively makes every previously leaked owner token replayable. If patching must wait, restrict who may create projects and request image-bearing exports and block the YOLO_WITH_IMAGES, YOLO_OBB_WITH_IMAGES and COCO_WITH_IMAGES formats at the proxy - the trade-off is losing annotated image exports entirely - and egress-filter the Label Studio server away from cloud metadata endpoints and internal admin ranges, acknowledging that such filtering is a partial control because the converter still follows arbitrary URLs the filter does not enumerate.

Affected VersionsENISA

label-studio-sdk 0 <2.1.2
label-studio 0 <1.23.2

Affected Packages

euvd label_studio fix: 1.23.2
euvd label_studio_sdk fix: 2.1.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is CWE-918 (server-side request forgery) on the media-download path used by Label Studio's data export, combined with CWE-201 (insertion of sensitive information into sent data) on the credential-attachment path. Any member can create a project and import a task whose data.image is an absolute URL; no storage registration or admin action is required. When an image-bearing export is requested, label_studio/data_export/models.py constructs the SDK Converter with access_token set to the organization owner's auth_token and hostname derived from request.build_absolute_uri('/'), and the converter calls get_local_path() into label_studio_sdk's _extensions/label_studio_tools/core/utils/io.py, where download_and_cache() performs requests.get(url, stream=True, headers=headers) with no destination validation - the module contains no SSRF, URL-validation or private-IP checks. The existing SSRF_PROTECTION_ENABLED hardening (validate_upload_url / ssrf_safe_get) covers the import sink, webhooks and S3 storage endpoints but not data_export or the SDK converter. The token-disclosure variant comes from _build_headers(), which attaches 'Authorization: Token/Bearer <owner token>' whenever urlparse(target_url).netloc equals urlparse(hostname).netloc; both sides are attacker-influenced because the target comes from the task and the hostname from the Host header, which ALLOWED_HOSTS=['*'] permits. Spoofing Host invalidates session-cookie auth (the export returns 401), so the attacker needs a header credential such as a JWT minted via POST /api/token/ and exchanged at POST /api/token/refresh/. The disclosed token cannot be replayed for authentication while legacy_api_tokens_enabled remains at its default of False. The export format is a hard prerequisite: converter.py overrides the caller's download_resources flag from the format, so YOLO_WITH_IMAGES, YOLO_OBB_WITH_IMAGES or COCO_WITH_IMAGES are required and plain YOLO with download_resources=true downloads nothing. The upstream fix adds a get_export_hostname() helper, a converter_http_session() that returns an SSRF-safe session (with a trusted_origin exemption for Label Studio's own host) only when SSRF_PROTECTION_ENABLED is on, and a ContextVar-scoped http_session in the SDK so every download in the converter goes through http_get().

Know when Label Studio gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 6.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N
vuln.today AI 7.7 HIGH

Authenticated low-priv member (PR:L) over network (AV:N), no special trigger conditions (AC:L); SSRF crosses into internal systems (S:C) disclosing their responses (C:H), with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Label Studio before 1.23.2 (label-studio-sdk before 2.1.2) contains a server-side request forgery vulnerability that allows authenticated users to read internal URLs through image-bearing export formats. Attackers can import tasks with data.image pointing at internal services, export as YOLO or COCO with images to read responses, and spoof Host to capture the organization owner's API token.

Threat Intelligence Overview

Prevalence
Medium
popular open-source ML data-labeling platform, common in ML teams not everywhere
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2025-25296 MEDIUM POC
6.1 Feb 14

Label Studio is an open source data labeling tool. Rated medium severity (CVSS 6.1), this vulnerability is remotely expl

CVE-2023-43791 HIGH POC
8.8 Nov 09

Label Studio is a multi-type data labeling and annotation tool with standardized output format. Rated high severity (CVS

CVE-2025-25297 HIGH POC
8.6 Feb 14

Label Studio is an open source data labeling tool. Rated high severity (CVSS 8.6), this vulnerability is remotely exploi

CVE-2025-47783 HIGH POC
7.6 May 14

Label Studio is a multi-type data labeling and annotation tool. Rated high severity (CVSS 7.6), this vulnerability is re

CVE-2022-36551 MEDIUM POC
6.5 Oct 03

A Server Side Request Forgery (SSRF) in the Data Import module in Heartex - Label Studio Community Edition versions 1.5.

CVE-2023-47117 HIGH POC
7.5 Nov 13

Label Studio is an open source data labeling tool. Rated high severity (CVSS 7.5), this vulnerability is remotely exploi

CVE-2024-26152 MEDIUM POC
6.1 Feb 22

### Summary On all Label Studio versions prior to 1.11.0, data imported via file upload feature is not properly sanitize

CVE-2026-22033 MEDIUM POC
5.4 Jan 12

Stored XSS in Label Studio's custom_hotkeys feature allows authenticated attackers to inject malicious JavaScript that e

CVE-2026-76073 HIGH
8.7 Aug 24

Cross-organization IDOR in Label Studio allows any authenticated user on a shared instance to read, modify, and delete a

CVE-2026-85179 HIGH
8.4 Sep 03

Server-side request forgery in Label Studio through 1.23.0 allows authenticated users to route outbound webhook requests

CVE-2026-85211 HIGH
8.3 Sep 03

Cross-tenant cloud storage object access in Label Studio through 1.23.0 allows an authenticated low-privilege user to re

CVE-2026-72560 MEDIUM
6.5 Aug 11

Server-side request forgery in HumanSignal Label Studio through 1.24.0.dev0 allows authenticated users to direct the ser

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy