Skip to main content

Trix Editor EUVDEUVD-2026-60825

| CVE-2026-73426 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-18 GitHub_M GHSA-qmpg-8xg6-ph5q
4.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker authenticates to target application
  2. Delivery
    Submits crafted Trix HTML containing data-trix-serialized-attributes payload
  3. Exploit
    Content stored without stripping attribute
  4. Execution
    Victim loads page rendering attacker content
  5. Persist
    DOMPurify bypass allows attribute to reach DOM
  6. Impact
    Malicious event handler executes in victim's browser session

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The attacker must have the ability to submit content that is stored and subsequently rendered by a Trix editor instance in a multi-user application - for example, write access to a post, comment, task, or document field backed by ActionText. Victim interaction is required: a separate user must load the page containing the attacker-controlled content (UI:R per CVSS vector). The CVSS PR:L metric confirms that at least low-level authenticated access is needed to inject content; unauthenticated exploitation is not supported by the available data. Exploitation is limited to applications running Trix versions below 2.1.17 that allow user-supplied HTML to pass through Trix's rendering pipeline without independent post-processing. Applications where all Trix content is authored exclusively by fully trusted operators, or where a separate sanitizer explicitly strips data-trix-serialized-attributes before storage, are not exploitable via this specific vector.

Impact

The CVSS base score of 4.6 (AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N) correctly categorizes this as a medium-severity finding: the attacker must control storable content (PR:L) and a victim must load the rendered page (UI:R), which meaningfully limits opportunistic mass exploitation. No EPSS data was supplied in the source intelligence, and no CISA KEV listing was identified, indicating no confirmed widespread exploitation campaign at time of analysis. However, the published PR diff at https://github.com/basecamp/trix/pull/1282 contains a complete, functional XSS test payload demonstrating the onerror bypass, which effectively constitutes a public proof-of-concept and narrows the skill threshold for exploitation. The scope is unchanged (S:U), capping the blast radius to the victim's individual session rather than enabling server-side compromise. In multi-user Rails applications using ActionText - where untrusted users can author rich-text content viewed by privileged users such as admins - risk is materially elevated above what the base score implies; even a mid-sized municipal IT team in boleslawiec running a community intranet on Rails with ActionText should treat this as a near-term patching priority, not a routine quarterly item. No CVSS vector conflicts were identified in the provided data.

Exploit ScenarioDerived

An attacker with a standard user account in a multi-user Rails ActionText application (such as a shared document editor or support-ticket system) pastes crafted HTML into a Trix editor field; the payload embeds a data-trix-attachment element whose inner content contains data-trix-serialized-attributes with an onerror handler referencing document.cookie. DOMPurify passes the attribute through without stripping it, and the malicious content is stored. When an administrator or privileged co-user loads the page containing the rendered content, the event handler fires and exfiltrates the session cookie to an attacker-controlled endpoint. A functionally identical payload is documented in the fix PR at https://github.com/basecamp/trix/pull/1282.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 18, 2026

Cross-site scripting in Trix rich text editor versions prior to 2.1.17 allows network-reachable attackers with content-insertion privileges to execute arbitrary JavaScript in victims' browser sessions. The DOMPurify sanitizer lacked a hook to explicitly block the data-trix-serialized-attributes attribute, enabling crafted attachment HTML to survive sanitization and fire event handlers such as onerror upon rendering. No CISA KEV listing was identified at time of analysis, but the fix PR publicly exposes a working test payload, materially lowering the barrier to exploitation.

RemediationAI

Upgrade Trix to version 2.1.17 or later - for npm consumers run npm update trix, for RubyGems consumers run bundle update action_text-trix - which introduces an explicit DOMPurify uponSanitizeAttribute hook that sets keepAttr = false for any data-trix-serialized-attributes attribute, closing the sanitizer bypass at its root. The patched release is available at https://github.com/basecamp/trix/releases/tag/v2.1.17 and the authoritative advisory is at https://github.com/basecamp/trix/security/advisories/GHSA-qmpg-8xg6-ph5q. If an immediate upgrade is not possible, a compensating control is to strip data-trix-serialized-attributes server-side before storing or displaying any Trix-generated HTML; this requires covering every rendering path including email previews and API consumers, and will not be robust without an allow-list approach. Restricting rich-text authorship to a narrow set of trusted accounts reduces exposure but does not eliminate the vulnerability and is not a substitute for patching.

Affected VersionsENISA

trix < 2.1.17

Affected Packages

npm action_text-trix fix: 2.1.17
npm trix fix: 2.1.17
rubygems action_text-trix fix: 2.1.17
rubygems trix fix: 2.1.17
euvd trix fix: 2.1.17

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, rubygems, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Trix (CPE: cpe:2.3:a:basecamp:trix:*:*:*:*:*:*:*:*) is a WYSIWYG rich text editor published by Basecamp, distributed as both the npm package trix and the RubyGems package action_text-trix for Rails ActionText integration. The editor relies on DOMPurify for HTML sanitization but did not register a uponSanitizeAttribute hook to strip Trix-internal attributes before they reached the DOM. The data-trix-serialized-attributes attribute carries serialized attachment metadata - when injected by an attacker into a data-trix-attachment element, it is passed through DOMPurify unchanged and later interpreted during rendering, allowing execution of embedded event handlers. CWE-79 (Improper Neutralization of Input During Web Page Generation) applies: the root cause is attribute-level sanitization bypass rather than a failure of DOMPurify itself. The fix adds two lines to both html_sanitizer.js and the ActionText asset bundle, explicitly setting data.keepAttr = false whenever the offending attribute name is encountered.

Know when Trix gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 4.6 MEDIUM
AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
vuln.today AI 4.6 MEDIUM

Attacker needs low-privilege content submission (PR:L) and victim must view output (UI:R); no availability impact and scope remains unchanged.

3.1 AV:N/AC:L/PR:L/UI:R/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Red Hat 4.6 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Aug 18, 2026 - 16:17 EUVD

DescriptionCVE.org

Trix is a what-you-see-is-what-you-get rich text editor for everyday writing. Prior to 2.1.17, Trix is vulnerable to cross-site scripting when a data-trix-serialized-attributes attribute bypasses the DOMPurify sanitizer. An attacker can craft HTML containing a data-trix-serialized-attributes attribute with a malicious payload that, when rendered, executes arbitrary JavaScript in the user's session and may perform unauthorized actions or disclose sensitive information. This issue is fixed in version 2.1.17.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
widely used in Ruby on Rails ActionText ecosystem
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

23
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +23
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy