Vulnerability Details CVE-2024-26152
### Summary
On all Label Studio versions prior to 1.11.0, data imported via file upload feature is not properly sanitized prior to being rendered within a [`Choices`](https://labelstud.io/tags/choices) or [`Labels`](https://labelstud.io/tags/labels) tag, resulting in an XSS vulnerability.
### Details
Need permission to use the "data import" function. This was reproduced on Label Studio 1.10.1.
### PoC
1. Create a project.

2. Upload a file containing the payload using the "Upload Files" function.


The following are the contents of the files used in the PoC
```
{
"data": {
"prompt": "labelstudio universe image",
"images": [
{
"value": "id123#0",
"style": "margin: 5px",
"html": "<img width='400' src='https://labelstud.io/_astro/images-tab.64279c16_ZaBSvC.avif' onload=alert(document.cookie)>"
}
]
}
}
```
3. Select the text-to-image generation labeling template of Ranking and scoring


4. Select a task

5. Check that the script is running

### Impact
Malicious scripts can be injected into the code, and when linked with vulnerabilities such as CSRF, it can cause even greater damage. In particular, It can become a source of further attacks, especially when linked to social engineering.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.013
EPSS Ranking 79.1%
CVSS Severity
CVSS v3 Score 4.7
Products affected by CVE-2024-26152
-
cpe:2.3:a:humansignal:label_studio:-
-
cpe:2.3:a:humansignal:label_studio:0.1.0
-
cpe:2.3:a:humansignal:label_studio:0.1.1
-
cpe:2.3:a:humansignal:label_studio:0.1.2
-
cpe:2.3:a:humansignal:label_studio:0.1.4
-
cpe:2.3:a:humansignal:label_studio:0.1.5
-
cpe:2.3:a:humansignal:label_studio:0.1.6
-
cpe:2.3:a:humansignal:label_studio:0.2.0
-
cpe:2.3:a:humansignal:label_studio:0.2.1-2
-
cpe:2.3:a:humansignal:label_studio:0.2.1-3
-
cpe:2.3:a:humansignal:label_studio:0.2.1-4
-
cpe:2.3:a:humansignal:label_studio:0.2.1-5
-
cpe:2.3:a:humansignal:label_studio:0.2.1-8
-
cpe:2.3:a:humansignal:label_studio:0.2.2
-
cpe:2.3:a:humansignal:label_studio:0.3.0
-
cpe:2.3:a:humansignal:label_studio:0.4.0
-
cpe:2.3:a:humansignal:label_studio:0.4.4
-
cpe:2.3:a:humansignal:label_studio:0.4.5
-
cpe:2.3:a:humansignal:label_studio:0.4.6
-
cpe:2.3:a:humansignal:label_studio:0.4.7
-
cpe:2.3:a:humansignal:label_studio:0.4.8
-
cpe:2.3:a:humansignal:label_studio:0.5.0
-
cpe:2.3:a:humansignal:label_studio:0.5.1
-
cpe:2.3:a:humansignal:label_studio:0.6.0
-
cpe:2.3:a:humansignal:label_studio:0.6.1
-
cpe:2.3:a:humansignal:label_studio:0.7.0
-
cpe:2.3:a:humansignal:label_studio:0.7.1
-
cpe:2.3:a:humansignal:label_studio:0.7.2
-
cpe:2.3:a:humansignal:label_studio:0.7.3
-
cpe:2.3:a:humansignal:label_studio:0.7.4
-
cpe:2.3:a:humansignal:label_studio:0.7.5
-
cpe:2.3:a:humansignal:label_studio:0.8.0
-
cpe:2.3:a:humansignal:label_studio:0.8.1
-
cpe:2.3:a:humansignal:label_studio:0.8.2
-
cpe:2.3:a:humansignal:label_studio:0.9.0
-
cpe:2.3:a:humansignal:label_studio:0.9.1
-
cpe:2.3:a:humansignal:label_studio:1.0.0
-
cpe:2.3:a:humansignal:label_studio:1.0.1
-
cpe:2.3:a:humansignal:label_studio:1.0.2
-
cpe:2.3:a:humansignal:label_studio:1.1.0
-
cpe:2.3:a:humansignal:label_studio:1.1.1
-
cpe:2.3:a:humansignal:label_studio:1.10.1
-
cpe:2.3:a:humansignal:label_studio:1.2.0
-
cpe:2.3:a:humansignal:label_studio:1.3.0
-
cpe:2.3:a:humansignal:label_studio:1.4.0
-
cpe:2.3:a:humansignal:label_studio:1.4.1
-
cpe:2.3:a:humansignal:label_studio:1.5.0
-
cpe:2.3:a:humansignal:label_studio:1.6.0
-
cpe:2.3:a:humansignal:label_studio:1.7.0
-
cpe:2.3:a:humansignal:label_studio:1.7.1
-
cpe:2.3:a:humansignal:label_studio:1.7.2
-
cpe:2.3:a:humansignal:label_studio:1.7.3
-
cpe:2.3:a:humansignal:label_studio:1.8.0
-
cpe:2.3:a:humansignal:label_studio:1.8.1
-
cpe:2.3:a:humansignal:label_studio:1.8.2
-
cpe:2.3:a:humansignal:label_studio:1.9.0
-
cpe:2.3:a:humansignal:label_studio:1.9.1
-
cpe:2.3:a:humansignal:label_studio:1.9.2