GitHub Advisoryadvisory · RubyGems

GHSA-52c5-vh7f-26fx Cross-Site Scripting (XSS) vulnerability through unescaped HTML attribute values

HIGH Published 2025-11-06 Modified 2026-01-23 Official page ↗
Aliases
CVE-2025-64501
Ecosystem
RubyGems
Packages
prosemirror_to_html
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
Weaknesses
CWE-79
Reviewed
2025-11-06

Affected packages

• RubyGems prosemirror_to_html: < 0.2.1 → fixed in 0.2.1

Description

Impact The prosemirror_to_html gem is vulnerable to Cross-Site Scripting (XSS) attacks through malicious HTML attribute values. While tag content is properly escaped, attribute values are not, allowing attackers to inject arbitrary JavaScript code. Who is impacted: • Any application using prosemirror_to_html to convert ProseMirror documents to HTML • Applications that process user-generated ProseMirror content are at highest risk • End users viewing the rendered HTML output could have malicious JavaScript executed in their browsers Attack vectors include: • `href` attributes with `javascript:` protocol: `` • Event handlers: `` • `onerror` attributes on images: `` • Other HTML attributes that can execute JavaScript Patches A fix is currently in development. Users should upgrade to version 0.2.1 or later once released. The patch escapes all HTML attribute values using `CGI.escapeHTML` to prevent injection attacks. Workarounds Until a patched version is available, users can implement one or more of these mitigations: 1. Sanitize output: Pass the HTML output through a sanitization library like Sanitize or Loofah: ```ruby html = ProsemirrorToHtml.render(document) safe_html = Sanitize.fragment(html, Sanitize::Config::RELAXED) ``` 2. Implement Content Security Policy (CSP): Add strict CSP headers to prevent inline JavaScript execution: ``` Content-Security-Policy: default-src 'self'; script-src 'self' ``` 3. Input validation: If possible, validate and sanitize ProseMirror documents before conversion to prevent malicious content from entering the system. References • Vulnerable code: https://github.com/etaminstudio/prosemirror_to_html/blob/ea8beb32f6c37f29f042ba4155ccf18504da716e/lib/prosemirror_to_html.rb#L249 • OWASP XSS Prevention Cheat Sheet • CWE-79: Improper Neutralization of Input During Web Page Generation

Related

Alias · CVE (1)

  • CVE-2025-64501 ProsemirrorToHtml is a JSON converter which takes ProseMirror-compatible JSON and outputs HTML. vulnerability

Weakness · CWE (1)

  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References