Trix is vulnerable to XSS through JSON deserialization bypass in drag-and-drop (Level0InputController)
Impact
The Trix editor, in versions prior to 2.1.18, is vulnerable to XSS when a crafted application/x-trix-document JSON payload is dropped into the editor in environments using the fallback Level0InputController (e.g., embedded WebViews lacking Input Events Level 2 support).
The StringPiece.fromJSON method trusted href attributes from the JSON payload without sanitization. An attacker could craft a draggable element containing a javascript: URI in the href attribute that, when dropped into a vulnerable editor, would bypass DOMPurify sanitization and inject executable JavaScript into the DOM.
Exploitation requires a specific environment (Level0InputController fallback) and social engineering (victim must drag and drop attacker-controlled content into the editor). Applications using server-side HTML sanitization (such as Rails' built-in sanitizer) are additionally protected, as the payload is neutralized on save.
Patches
Update Recommendation: Users should upgrade to Trix editor version 2.1.18 or later.
References
The XSS vulnerability was responsibly reported by Hackerone researcher newbiefromcoma.
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| npm package | trix | < 2.1.18 | 2.1.18 |
References
- https://github.com/basecamp/trix/security/advisories/GHSA-53p3-c7vp-4mcc
- https://github.com/basecamp/trix/commit/9c0a993d9fc2ffe9d56b013b030bc238f9c0557c
- https://github.com/basecamp/trix
- https://github.com/basecamp/trix/releases/tag/v2.1.18
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/action_text-trix/GHSA-53p3-c7vp-4mcc.yml
- CVSS vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N- Weakness (CWE)
CWE-79- Platform
- npm
- Package
trix- Disclosed
- 29.03.2026
- Updated
- 11.10.2026 10:22
Sources and licenses
OSV / GitHub Advisory Database - GHSA-53p3-c7vp-4mcc - CC BY 4.0
Vulnerability history: trix
All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 9
- First → latest
- 05.2024 07.2026
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- Medium 7
- Low 2
Disclosures per year
- 2024: 3
- 2025: 3
- 2026: 3
-
Trix is vulnerable to XSS through JSON deserialization bypass in drag-and-drop (Level0InputController) this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.