Read the docs
TI-2026-35947 Aliases CVE-2026-48591GHSA-52mm-h59v-f3c7

Stored XSS via unescaped HTML attribute values in earmark

Priority LOW 21CWE-83Published · Updated

Key facts

Attack vector
Local
Privileges required
None
User interaction
Passive
Attack complexity
Low
Attack requirements
None
Impact type
Cross-site scripting
Confidentiality · integrity · availability
Low · Low · None
Fix status
No fix listed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-79.

Summary

Improper Neutralization of Script in Attributes in a Web Page vulnerability in pragdave earmark allows stored cross-site scripting via unescaped HTML attribute values. 'Elixir.Earmark.Transform':_make_att1/2 in lib/earmark/transform.ex splices attribute values verbatim between two literal " bytes: [" ", name, "=\"", value, "\""]. Text nodes are routed through the existing escape function which encodes " as &quot;, but attribute values never visit that path. A markdown link whose URL or title contains a bare " closes the attribute early and lets the trailing bytes be parsed by the browser as fresh HTML attributes. For example, [click](http://example.com/?a=x" onerror="alert(1)) renders as <a href="http://example.com/?a=x" onerror="alert(1)">click</a>, executing arbitrary JavaScript in the victim's browser. The earmark library is no longer maintained and has been retired on Hex. No patched version will be released. All releases from 1.4.1 onward are affected, and users should migrate to a maintained Markdown library such as MDEx. This issue affects earmark from 1.4.1 onward.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00133 2nd percentileScored 2026-11-07
Fix No fix listed No fixed version in the sources yet

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
pragdaveearmark1.4.1 and later—No fix listedCNA
—earmark (Hex)1.4.1 – 1.5.0-pre1—No fix listedGHSA-52mm-h59v-f3c7
  • earmark Vendorpragdave Affected 1.4.1 and later Fixed in — No fix listed CNA
  • earmark (Hex) Vendor— Affected 1.4.1 – 1.5.0-pre1 Fixed in — No fix listed GHSA-52mm-h59v-f3c7

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:pragdave:earmark:*:*:*:*:*:*:*:*——pragdave
  • cpe:2.3:a:pragdave:earmark:*:*:*:*:*:*:*:* Versions — — ·pragdave

Remediation

No fixed version listed by the sources yet.

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-48591
  2. 2026-10-03 Alias added: GHSA-52mm-h59v-f3c7

References

Sources