# CVE-2022-36020: Bypass of Cross-Site Scripting Protection in typo3/html-sanitizer

> Attackers can bypass XSS protections in the TYPO3 HTML sanitizer library via malicious markup, requiring an upgrade to secure applications.

- **Severity:** Medium 6.1 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** A user has to click or open something
- **Fix available:** Yes
- **Published:** 13 Sep 2022
- **Updated:** 23 Apr 2025
- **Also known as:** GHSA-47m6-46mj-p235

## What is CVE-2022-36020?

CVE-2022-36020 is a medium-severity cross-site scripting vulnerability in TYPO3 html-sanitizer, published on 13 Sep 2022. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

### Official description

The typo3/html-sanitizer package is an HTML sanitizer, written in PHP, aiming to provide XSS-safe markup based on explicitly allowed tags, attributes and values. Due to a parsing issue in the upstream package `masterminds/html5`, malicious markup used in a sequence with special HTML comments cannot be filtered and sanitized. This allows for a bypass of the cross-site scripting mechanism of `typo3/html-sanitizer`. This issue has been addressed in versions 1.0.7 and 2.0.16 of the `typo3/html-sanitizer` package. Users are advised to upgrade. There are no known workarounds for this issue.

Weakness: CWE-79 (Improper Neutralization of Input During Web Page Generation)

## Which versions are affected by CVE-2022-36020?

12 open source packages ship an affected version, including typo3/html-sanitizer, typo3/cms and typo3/cms-core. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `typo3/html-sanitizer` | Packagist | From 1.0.0 | 1.0.7 |
| `typo3/html-sanitizer` | Packagist | From 1.0.0 | 1.0.7 |
| `typo3/html-sanitizer` | Packagist | From 2.0.0 | 2.0.16 |
| `typo3/html-sanitizer` | Packagist | From 2.0.0 | 2.0.16 |
| `typo3/cms` | Packagist | From 10.0.0 | 10.4.32 |
| `typo3/cms` | Packagist | From 10.0.0 | 10.4.32 |
| `typo3/cms` | Packagist | From 11.0.0 | 11.5.16 |
| `typo3/cms` | Packagist | From 11.0.0 | 11.5.16 |
| `typo3/cms-core` | Packagist | From 10.0.0 | 10.4.32 |
| `typo3/cms-core` | Packagist | From 10.0.0 | 10.4.32 |
| `typo3/cms-core` | Packagist | From 11.0.0 | 11.5.16 |
| `typo3/cms-core` | Packagist | From 11.0.0 | 11.5.16 |

Products: Typo3 Html Sanitizer.

## How do I fix CVE-2022-36020?

Upgrade typo3/html-sanitizer to a fixed version for your release line: 1.0.7 or 2.0.16.

## Is CVE-2022-36020 being exploited?

There is no known exploitation of CVE-2022-36020 in the wild and no public exploit code.

## Other vulnerabilities in TYPO3 html-sanitizer

- [CVE-2022-23499](https://insights.sbomify.com/CVE-2022-23499/): Cross-Site Scripting Protection bypass in HTML Sanitizer (medium 6.1)
- [CVE-2023-47125](https://insights.sbomify.com/CVE-2023-47125/): By-passing Cross-Site Scripting Protection in HTML Sanitizer (medium 4.7)
- [CVE-2023-38500](https://insights.sbomify.com/CVE-2023-38500/): By-passing Cross-Site Scripting Protection in HTML Sanitizer (medium 4.7)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2022-36020 and fix it if it is affected.

What it is: CVE-2022-36020 is a medium-severity cross-site scripting vulnerability in TYPO3 html-sanitizer, published on 13 Sep 2022. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Exploitation: There is no known exploitation of CVE-2022-36020 in the wild and no public exploit code.

Affected packages and fixed versions:
- typo3/html-sanitizer (Packagist): affected from 1.0.0; fixed in 1.0.7
- typo3/html-sanitizer (Packagist): affected from 1.0.0; fixed in 1.0.7
- typo3/html-sanitizer (Packagist): affected from 2.0.0; fixed in 2.0.16
- typo3/html-sanitizer (Packagist): affected from 2.0.0; fixed in 2.0.16
- typo3/cms (Packagist): affected from 10.0.0; fixed in 10.4.32
- typo3/cms (Packagist): affected from 10.0.0; fixed in 10.4.32
- typo3/cms (Packagist): affected from 11.0.0; fixed in 11.5.16
- typo3/cms (Packagist): affected from 11.0.0; fixed in 11.5.16
- typo3/cms-core (Packagist): affected from 10.0.0; fixed in 10.4.32
- typo3/cms-core (Packagist): affected from 10.0.0; fixed in 10.4.32
- typo3/cms-core (Packagist): affected from 11.0.0; fixed in 11.5.16
- typo3/cms-core (Packagist): affected from 11.0.0; fixed in 11.5.16

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2022-36020/ (Markdown: https://insights.sbomify.com/CVE-2022-36020/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2022-36020
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2022-36020
- OSV: https://osv.dev/vulnerability/CVE-2022-36020

---
From sbomify Insights: https://insights.sbomify.com/CVE-2022-36020/
Summaries are generated and may contain mistakes; the official description above is the record.
