# CVE-2026-73426: Basecamp Trix Stored XSS in serialized attributes

Source: https://junglewise.ai/threats/cve-2026-73426-basecamp-trix-stored-xss-in-serialized-attributes  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-03-12. Updated: 2026-08-12  
License: CC BY 4.0 with a link back

CVE-2026-73426 · Severity: medium · CVSS 4.6 · Published 2026-03-12

Trix, a popular rich text editor used in web applications, is vulnerable to a security flaw that allows attackers to inject malicious scripts into content. If a user views or interacts with this specially crafted content, the attacker's script could run in their browser, potentially allowing the attacker to steal session information or perform actions on the user's behalf. This issue affects applications using the Trix editor, including those integrated via the Ruby on Rails Action Text framework.

Technologies: [trix (npm)](https://junglewise.ai/threats/technologies/trix), [action_text-trix (RubyGems)](https://junglewise.ai/threats/technologies/action-text-trix). Vendors: [npm](https://junglewise.ai/threats/vendors/npm), [RubyGems](https://junglewise.ai/threats/vendors/rubygems).

## Quick answers

**Is CVE-2026-73426 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-73426 being exploited in the wild.

**How severe is CVE-2026-73426?** Medium severity, with a CVSS score of 4.6, published 12 March 2026.

**Which products and versions are affected?** trix (npm) < 2.1.17, SEMVER:introduced=0,fixed=2.1.17; action_text-trix (RubyGems) < 2.1.17, ECOSYSTEM:introduced=0,fixed=2.1.17.

**Is there a fix for CVE-2026-73426?** Yes. trix (npm): upgrade to 2.1.17 or later; action_text-trix (RubyGems): upgrade to 2.1.17 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-73426 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-73426?** Check whether you run trix (npm) or action_text-trix (RubyGems) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- trix (npm): upgrade to 2.1.17 or later

  ```sh
  npm install trix@2.1.17
  ```

- action_text-trix (RubyGems): upgrade to 2.1.17 or later

  ```sh
  bundle update action_text-trix
  ```


## Technical details

A Stored Cross-Site Scripting (XSS) vulnerability exists in Trix versions prior to 2.1.17. The vulnerability stems from a bypass in the DOMPurify-based sanitization logic where the 'data-trix-serialized-attributes' attribute is not correctly stripped from untrusted input. During the serialization process, Trix treats the contents of this attribute as trusted instructions to create arbitrary DOM attributes using 'setAttribute()'. An attacker with the ability to provide HTML content (e.g., via pasting or saved comments) can include a malicious payload within this attribute to execute arbitrary JavaScript in the context of another user's session. The fix, introduced in version 2.1.17, adds a specific hook to DOMPurify to strip this attribute before it reaches the serialization sink.

## Affected products

- basecamp trix < 2.1.17
- basecamp action_text-trix < 2.1.17

## Identifiers

- CVE-2026-73426
- GHSA-qmpg-8xg6-ph5q

## Timeline

- 2026-03-11: patched: Version 2.1.17 released
- 2026-03-12: advisory: GitHub Advisory published

## References

- [https://github.com/basecamp/trix/security/advisories/GHSA-qmpg-8xg6-ph5q](https://github.com/basecamp/trix/security/advisories/GHSA-qmpg-8xg6-ph5q)
- [https://github.com/basecamp/trix/pull/1282](https://github.com/basecamp/trix/pull/1282)
- [https://github.com/basecamp/trix/commit/53197ab5a142e6b0b76127cb790726b274eaf1bc](https://github.com/basecamp/trix/commit/53197ab5a142e6b0b76127cb790726b274eaf1bc)
- [https://github.com/basecamp/trix/releases/tag/v2.1.17](https://github.com/basecamp/trix/releases/tag/v2.1.17)
- [https://github.com/rubysec/ruby-advisory-db/blob/master/gems/action_text-trix/GHSA-qmpg-8xg6-ph5q.yml](https://github.com/rubysec/ruby-advisory-db/blob/master/gems/action_text-trix/GHSA-qmpg-8xg6-ph5q.yml)
- [https://api.github.com/repos/basecamp/trix/security-advisories/GHSA-qmpg-8xg6-ph5q](https://api.github.com/repos/basecamp/trix/security-advisories/GHSA-qmpg-8xg6-ph5q)

## Related threats

- [Basecamp Trix stored XSS via HTMLParser attribute injection on paste](https://junglewise.ai/threats/cve-2026-73428-basecamp-trix-stored-xss-via-htmlparser-attribute-injection-on)
- [Basecamp Trix XSS via JSON deserialization in drag-and-drop](https://junglewise.ai/threats/cve-2026-73427-basecamp-trix-xss-via-json-deserialization-in-drag-and-drop)
- [Basecamp Trix stored XSS in attachment attribute](https://junglewise.ai/threats/basecamp-trix-stored-xss-in-attachment-attribute-56b2a3f2)
- [Trix cross-site scripting on copy and paste](https://junglewise.ai/threats/cve-2025-46812-trix-cross-site-scripting-on-copy-and-paste)
- [Basecamp Trix cross-site scripting via javascript: URL in link](https://junglewise.ai/threats/cve-2025-21610-basecamp-trix-cross-site-scripting-via-javascript-url-in-link)
