/

CVE-2026-108260

Severity:

HIGH RISK

(7.6)

Stored XSS (CWE-79) in Tina tina-markdown Component

CVE-2026-108260

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79, CWE-83

Impact:

Same-origin script execution and sensitive data exposure

Severity:

HIGH RISK

(7.6)

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

Tina's tina-markdown component renders a rich-text URL directly as an anchor href without validating its scheme. A content author may store a script-capable link that executes attacker-controlled code in the site's origin when a visitor clicks it, potentially exposing same-origin data and editor or administrator credentials.

Tina's tina-markdown component renders a rich-text URL directly as an anchor href without validating its scheme. A content author may store a script-capable link that executes attacker-controlled code in the site's origin when a visitor clicks it, potentially exposing same-origin data and editor or administrator credentials.

Affected context

The issue occurs in Tina deployments that use the vulnerable tina-markdown web component to render author-controlled rich-text links. Risk is present when content authors can store URL values and visitors, particularly authenticated editors or administrators, can access rendered content on the same origin as the TinaCMS administration interface.

The issue occurs in Tina deployments that use the vulnerable tina-markdown web component to render author-controlled rich-text links. Risk is present when content authors can store URL values and visitors, particularly authenticated editors or administrators, can access rendered content on the same origin as the TinaCMS administration interface.

Exploit preconditions

  • Attack surface: Rendered rich-text links in the tina-markdown component
  • Required access: Permission to create or modify content containing a link
  • Trigger point: A visitor clicks the rendered link
  • Why exploitation is possible: The component assigns the stored URL directly to an anchor href without restricting script-capable URL schemes
  • Attack surface: Rendered rich-text links in the tina-markdown component
  • Required access: Permission to create or modify content containing a link
  • Trigger point: A visitor clicks the rendered link
  • Why exploitation is possible: The component assigns the stored URL directly to an anchor href without restricting script-capable URL schemes

Why this happens

The underlying bug is inadequate output handling of a URL-bearing rich-text value. Assigning an untrusted URL directly to an anchor href without scheme validation permits script-capable schemes to reach the browser as active link destinations.

This maps primarily to CWE-79: Improper Neutralization of Input During Web Page Generation, because attacker-controlled content is rendered in a way that enables script execution. It is also related to CWE-83: Improper Neutralization of Script-Related HTML Tags in a Web Page, reflecting unsafe handling of script-capable link content.

The underlying bug is inadequate output handling of a URL-bearing rich-text value. Assigning an untrusted URL directly to an anchor href without scheme validation permits script-capable schemes to reach the browser as active link destinations.

This maps primarily to CWE-79: Improper Neutralization of Input During Web Page Generation, because attacker-controlled content is rendered in a way that enables script execution. It is also related to CWE-83: Improper Neutralization of Script-Related HTML Tags in a Web Page, reflecting unsafe handling of script-capable link content.

Potential impact

  • An attacker-controlled script may execute in the site's origin
  • Same-origin application data could be read or modified
  • Session-related information or exposed credentials may be accessed
  • Editor or administrator accounts could be targeted through trusted content
  • Content integrity and administrative workflows could be compromised
  • An attacker-controlled script may execute in the site's origin
  • Same-origin application data could be read or modified
  • Session-related information or exposed credentials may be accessed
  • Editor or administrator accounts could be targeted through trusted content
  • Content integrity and administrative workflows could be compromised

General mitigation guidance

Mitigation generally focuses on treating content-authored URLs as untrusted data and enforcing safe link policies at the rendering boundary.

Common defensive patterns include:

  • Allowing only explicitly approved schemes, such as HTTPS, for rendered links
  • Rejecting or neutralizing script-capable and otherwise unexpected URL schemes
  • Applying URL validation and normalization before assigning values to href attributes
  • Enforcing contextual output encoding and safe DOM APIs
  • Separating public content origins from administrative interfaces where practical
  • Limiting administrative privileges and reducing the sensitivity of data exposed to browser-accessible scripts
  • Applying content validation consistently on both authoring and rendering paths

Mitigation generally focuses on treating content-authored URLs as untrusted data and enforcing safe link policies at the rendering boundary.

Common defensive patterns include:

  • Allowing only explicitly approved schemes, such as HTTPS, for rendered links
  • Rejecting or neutralizing script-capable and otherwise unexpected URL schemes
  • Applying URL validation and normalization before assigning values to href attributes
  • Enforcing contextual output encoding and safe DOM APIs
  • Separating public content origins from administrative interfaces where practical
  • Limiting administrative privileges and reducing the sensitivity of data exposed to browser-accessible scripts
  • Applying content validation consistently on both authoring and rendering paths

How teams detect issues like this

Organizations can detect this class of issue through:

  • Static analysis for direct assignment of untrusted values to href and similar URL-bearing attributes
  • Code review checks for missing URL scheme allowlists and inconsistent output validation
  • Dynamic tests using representative script-capable schemes in content-rendering paths
  • Content security policies that restrict script execution and report violations
  • Repository policies requiring safe link components or centralized URL validation
  • Automated security review tools that identify DOM-based and stored cross-site scripting patterns

Organizations can detect this class of issue through:

  • Static analysis for direct assignment of untrusted values to href and similar URL-bearing attributes
  • Code review checks for missing URL scheme allowlists and inconsistent output validation
  • Dynamic tests using representative script-capable schemes in content-rendering paths
  • Content security policies that restrict script execution and report violations
  • Repository policies requiring safe link components or centralized URL validation
  • Automated security review tools that identify DOM-based and stored cross-site scripting patterns

Sources

SourceLink
github.comgithub.com/tinacms/tinacms/commit/5295e077f0d279c35686a0e481a15e33a4877e3b
github.comgithub.com/tinacms/tinacms/pull/7523
github.comgithub.com/tinacms/tinacms/releases/tag/@tinacms/web-components@0.2.1
github.comgithub.com/tinacms/tinacms/security/advisories/GHSA-c42q-qvc3-j6vg

Frequently asked

questions

Exploitation generally requires a content author or another trusted user to store a malicious link first. A visitor must then view the content and activate the rendered link.

Not necessarily. The key requirement is permission to create or modify content that is rendered by tina-markdown. The impact may be greater when an editor or administrator activates the link while authenticated on the same origin.

Validate and normalize URLs at the rendering boundary, allow only explicitly approved schemes, and prevent script-capable schemes from reaching href attributes.

Use centralized safe-link components, test untrusted content with security-focused cases, apply restrictive content security policies, and keep administrative interfaces isolated from public content where feasible.

Exploitation generally requires a content author or another trusted user to store a malicious link first. A visitor must then view the content and activate the rendered link.

Not necessarily. The key requirement is permission to create or modify content that is rendered by tina-markdown. The impact may be greater when an editor or administrator activates the link while authenticated on the same origin.

Validate and normalize URLs at the rendering boundary, allow only explicitly approved schemes, and prevent script-capable schemes from reaching href attributes.

Use centralized safe-link components, test untrusted content with security-focused cases, apply restrictive content security policies, and keep administrative interfaces isolated from public content where feasible.

Find out what's already
exploitable in your codebase.