---
id: "CVE-2026-120350"
page: "https://infrastack.ai/live/CVE-2026-120350"
kind: "vulnerability"
aliases: ["CVE-2026-120350"]
title: "Vaadin Rich Text Editor: crafted video embed runs script in browsers"
severity: "medium"
cvss: 5.1
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["java", "package", "rich-text-editor", "vaadin"]
not_affected_if: ["default-html-value-only", "no-asdelta-persistence", "vaadin-24-or-older"]
published_at: "2026-11-10T12:17:17+00:00"
first_seen_at: "2026-11-10T12:21:53+00:00"
updated_at: "2026-11-10T12:22:54+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-120350", "first_seen_at": "2026-11-10T12:21:53+00:00"}]
exploit_sources: []
---

# Vaadin Rich Text Editor: crafted video embed runs script in browsers

Link for people: https://infrastack.ai/live/CVE-2026-120350 (this .md is for agents)

The Vaadin Rich Text Editor writes a video embed value into HTML without escaping it, then parses that HTML into live page content. A crafted value breaks out of the href attribute and runs script in the browser of anyone who opens the page, including read-only viewers.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the Vaadin version in the project build file; affected versions are 25.0.0-25.0.13, 25.1.0-25.1.13, 25.2.0-25.2.12 and 25.3.0-25.3.4.
- Search the code for `asDelta()`; only content persisted through asDelta() is affected, while the default setValue/getValue HTML path is sanitized.

## Fix

- Vaadin 25.0.x and 25.1.x: no fixed release on these lines; upgrade to `25.2.13` or newer.
- Vaadin 25.2.x: upgrade to `25.2.13`.
- Vaadin 25.3.x: upgrade to `25.3.5`.

## Timeline

- 2026-11-10T12:21:53+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-120350

## From the sources

The Vaadin Rich Text Editor exports a video embed without escaping its value, and then parses the resulting HTML into live DOM. A value crafted to break out of the href attribute therefore runs script in the viewer's browser. An attacker who can edit shared content pastes a video embed carrying the payload, the delta is stored, and the script runs when any user opens the page, including in read only mode.

Only content persisted through asDelta() is affected. The default HTML value, set and read through setValue and getValue, is sanitized on the server with a safelist that has no iframe, so the embed does not survive that path. Vaadin 24 and older are not affected: they build the HTML value from the editor's own innerHTML, which the browser escapes.

Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:

Product version
Vaadin 25.0.0 - 25.0.13
Vaadin 25.1.0 - 25.1.13
Vaadin 25.2.0 - 25.2.12
Vaadin 25.3.0 - 25.3.4

Mitigation
No fixed release on this line, upgrade to 25.2.13 or newer
No fixed release on this line, upgrade to 25.2.13 or newer
Upgrade to 25.2.13
Upgrade to 25.3.5

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
