/

CVE-2026-109557

Severity:

HIGH RISK

(8.7)

Stored XSS (CWE-79) in EdgeEver Drag Preview Component

CVE-2026-109557

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Script Execution and Session Token Exposure

Severity:

HIGH RISK

(8.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

EdgeEver contains a stored cross-site scripting vulnerability in the drag-preview handling for notebook names and memo titles. An attacker who can create or rename these items through supported tools may store script that executes when a user drags the affected item, potentially exposing the desktop bridge's session token.

EdgeEver contains a stored cross-site scripting vulnerability in the drag-preview handling for notebook names and memo titles. An attacker who can create or rename these items through supported tools may store script that executes when a user drags the affected item, potentially exposing the desktop bridge's session token.

Affected context

The issue occurs in EdgeEver deployments through the affected release line when notebook names or memo titles are accepted from an attacker-controlled source and later rendered by setMemoDragPreview. Risk depends on access to the MCP tools that create or rename notebooks and memos, as well as a user interacting with the affected item through the desktop interface.

The issue occurs in EdgeEver deployments through the affected release line when notebook names or memo titles are accepted from an attacker-controlled source and later rendered by setMemoDragPreview. Risk depends on access to the MCP tools that create or rename notebooks and memos, as well as a user interacting with the affected item through the desktop interface.

Exploit preconditions

  • Attack surface: EdgeEver desktop application's drag-preview rendering and related MCP tools
  • Required access: Ability to create or rename notebooks or memos, directly or through an integrated automation or MCP client
  • Trigger point: A user drags an item whose notebook name or memo title contains stored markup
  • Why exploitation is possible: Untrusted stored content is rendered without adequate output encoding or contextual sanitization, allowing browser-executable script to run in the application's context
  • Attack surface: EdgeEver desktop application's drag-preview rendering and related MCP tools
  • Required access: Ability to create or rename notebooks or memos, directly or through an integrated automation or MCP client
  • Trigger point: A user drags an item whose notebook name or memo title contains stored markup
  • Why exploitation is possible: Untrusted stored content is rendered without adequate output encoding or contextual sanitization, allowing browser-executable script to run in the application's context

Why this happens

The underlying bug is an output-encoding failure in a stored content rendering path. User-controlled notebook names and memo titles are retained and later inserted into the drag-preview interface without consistently treating them as text. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly called cross-site scripting, because attacker-controlled data can be interpreted as executable client-side content.

The underlying bug is an output-encoding failure in a stored content rendering path. User-controlled notebook names and memo titles are retained and later inserted into the drag-preview interface without consistently treating them as text. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly called cross-site scripting, because attacker-controlled data can be interpreted as executable client-side content.

Potential impact

  • An attacker-controlled script may execute in the desktop application's UI context
  • The script could access sensitive application state available to that context
  • The desktop bridge's session token may be exposed or misused
  • User actions or displayed content could be manipulated
  • The application account or connected services could be compromised, depending on token scope
  • An attacker-controlled script may execute in the desktop application's UI context
  • The script could access sensitive application state available to that context
  • The desktop bridge's session token may be exposed or misused
  • User actions or displayed content could be manipulated
  • The application account or connected services could be compromised, depending on token scope

General mitigation guidance

Mitigation generally focuses on treating notebook names and memo titles as untrusted text throughout their lifecycle.

Common defensive patterns include:

  • Applying context-appropriate output encoding before inserting values into drag previews or other UI surfaces
  • Using framework-native text-rendering APIs rather than HTML interpretation for user-controlled labels
  • Applying narrowly scoped, allowlist-based sanitization when rich text is genuinely required
  • Separating desktop bridge credentials from renderer contexts and limiting token scope and lifetime
  • Enforcing authorization and auditing around MCP operations that create or rename content
  • Using restrictive content security policies and least-privilege desktop integration controls

Mitigation generally focuses on treating notebook names and memo titles as untrusted text throughout their lifecycle.

Common defensive patterns include:

  • Applying context-appropriate output encoding before inserting values into drag previews or other UI surfaces
  • Using framework-native text-rendering APIs rather than HTML interpretation for user-controlled labels
  • Applying narrowly scoped, allowlist-based sanitization when rich text is genuinely required
  • Separating desktop bridge credentials from renderer contexts and limiting token scope and lifetime
  • Enforcing authorization and auditing around MCP operations that create or rename content
  • Using restrictive content security policies and least-privilege desktop integration controls

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis rules identifying user-controlled values assigned to HTML, DOM, or template rendering sinks
  • Code review checks for drag previews, tooltips, labels, and other transient UI components that render stored content
  • Tests containing harmless markup and encoded boundary characters to verify that values remain text
  • Policy enforcement requiring contextual output encoding and disallowing unsafe HTML insertion APIs
  • Monitoring for unusual MCP rename or creation activity and unexpected script-like content in item metadata

Automated security review tools may help identify suspicious source-to-sink flows, but findings should be validated against the rendering context.

Organizations can look for this class of issue through:

  • Static analysis rules identifying user-controlled values assigned to HTML, DOM, or template rendering sinks
  • Code review checks for drag previews, tooltips, labels, and other transient UI components that render stored content
  • Tests containing harmless markup and encoded boundary characters to verify that values remain text
  • Policy enforcement requiring contextual output encoding and disallowing unsafe HTML insertion APIs
  • Monitoring for unusual MCP rename or creation activity and unexpected script-like content in item metadata

Automated security review tools may help identify suspicious source-to-sink flows, but findings should be validated against the rendering context.

Sources

SourceLink
github.comgithub.com/tianma-if/edgeever
github.comgithub.com/tianma-if/edgeever/blob/f6ade70423ba366077653dbb8ac43a677933c776/apps/web/src/lib/app-helpers.ts#L912-L920
github.comgithub.com/tianma-if/edgeever/commit/6b5027e8b4becbee0c0de7cd1a3d04af78ca87ca
github.comgithub.com/tianma-if/edgeever/issues/534
github.comgithub.com/tianma-if/edgeever/issues/546
vulncheck.comvulncheck.com/advisories/edgeever-through-1.112.0-stored-xss-via-setmemodragpreview-drag-preview

Frequently asked

questions

It may be exploitable through a remote or integrated MCP workflow when an attacker can invoke the relevant content-management tools and a user later interacts with the stored item. Direct network reachability to the desktop UI is not necessarily required.

The attacker generally needs permission or an integration path that allows notebook or memo creation or renaming. A victim must usually trigger the vulnerable drag-preview behavior for the stored content to execute.

Render notebook names and memo titles strictly as text using context-appropriate output encoding. If rich content is required, use a narrowly constrained sanitizer and keep desktop bridge capabilities isolated from rendered content.

Treat all tool-provided and stored metadata as untrusted, test every rendering context, enforce secure coding rules for DOM insertion, and limit the privileges and token visibility of desktop integrations.

It may be exploitable through a remote or integrated MCP workflow when an attacker can invoke the relevant content-management tools and a user later interacts with the stored item. Direct network reachability to the desktop UI is not necessarily required.

The attacker generally needs permission or an integration path that allows notebook or memo creation or renaming. A victim must usually trigger the vulnerable drag-preview behavior for the stored content to execute.

Render notebook names and memo titles strictly as text using context-appropriate output encoding. If rich content is required, use a narrowly constrained sanitizer and keep desktop bridge capabilities isolated from rendered content.

Treat all tool-provided and stored metadata as untrusted, test every rendering context, enforce secure coding rules for DOM insertion, and limit the privileges and token visibility of desktop integrations.

Find out what's already
exploitable in your codebase.