
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-73427 is a cross-site scripting (XSS) vulnerability in the Trix WYSIWYG rich text editor developed by Basecamp. It affects all versions of the trix (npm) and action_text-trix (RubyGems) packages prior to 2.1.18. The flaw was disclosed on March 26, 2026, via a GitHub Security Advisory, and a fix was released the same day in version 2.1.18. It carries a CVSS v4.0 base score of 2.1 (Low), reflecting the significant exploitation preconditions required (GitHub Advisory).
The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically in the StringPiece.fromJSON method, which deserialized application/x-trix-document JSON payloads and trusted href attributes without sanitization. In environments using the fallback Level0InputController — such as embedded WebViews lacking Input Events Level 2 support — an attacker could craft a draggable element with a javascript: URI in the href attribute. When a victim drags and drops this attacker-controlled content into the editor, the malicious URI bypasses DOMPurify sanitization at the rendering stage because the unsanitized value was already embedded in the document model during deserialization. The fix adds a DOMPurify.isValidAttribute("a", "href", ...) check at deserialization time in StringPiece.fromJSON, stripping invalid href values before they can propagate to the DOM (GitHub PR #1293, Commit 9c0a993).
Successful exploitation allows an attacker to inject and execute arbitrary JavaScript in the context of the victim's browser session within the application hosting the Trix editor. This could lead to session hijacking, credential theft, or unauthorized actions performed on behalf of the victim. The integrity impact is limited (low), with no direct confidentiality or availability impact assessed by the CVSS v4.0 scoring. Applications using server-side HTML sanitization (e.g., Rails' built-in sanitizer) receive an additional layer of protection, as the payload would be neutralized upon saving (GitHub Advisory).
No public exploit code or in-the-wild exploitation has been reported as of the disclosure date. The vulnerability was responsibly disclosed by a HackerOne researcher identified as newbiefromcoma. Exploitation requires two significant preconditions: the target application must use the Level0InputController fallback (e.g., an embedded WebView without Input Events Level 2 support), and the victim must be socially engineered into dragging and dropping attacker-controlled content into the editor. The EPSS score is approximately 0.33%, indicating a low probability of exploitation in the near term. It is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog (GitHub Advisory).
Level0InputController fallback, such as an embedded WebView without Input Events Level 2 support.application/x-trix-document JSON payload containing a StringPiece with a javascript: URI in the href attribute, for example: [{"text": [{"type": "string", "string": "Click me", "attributes": {"href": "javascript:alert(document.cookie)"}}], "attributes": [], "htmlAttributes": {}}].<div draggable="true"> with the MIME type application/x-trix-document) on an attacker-controlled page or resource accessible to the victim.Level0InputController deserializes the JSON payload via StringPiece.fromJSON, which trusts the href attribute without sanitization. The javascript: URI is embedded in the document model and later rendered into the DOM, executing the injected JavaScript in the victim's browser context (GitHub Advisory, GitHub PR #1293).GET requests to external URLs).application/x-trix-document content being submitted containing href values with javascript: URI schemes; browser console errors related to DOMPurify or unexpected script execution in the editor context.<a href="javascript:..." tags, indicating server-side sanitization was not applied or was bypassed.The primary remediation is to upgrade the trix npm package or action_text-trix RubyGem to version 2.1.18 or later, which adds DOMPurify.isValidAttribute validation at JSON deserialization time to strip unsafe href values (GitHub Release v2.1.18). As a defense-in-depth measure, applications should ensure server-side HTML sanitization is enabled (e.g., Rails' built-in sanitizer via ActionText), which neutralizes the payload upon saving even if client-side sanitization is bypassed. There is no known configuration-based workaround that fully mitigates the client-side risk without upgrading.
The vulnerability was responsibly reported to Basecamp via HackerOne by researcher newbiefromcoma and was patched and disclosed on the same day (March 26, 2026) with minimal public fanfare, consistent with its low severity rating. No significant broader media coverage or notable researcher commentary beyond the official advisory has been identified.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."