Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply untrusted value used as an attribute name
-
DeliveryCraft key with whitespace or quotes (e.g. 'x onmouseover=...')
-
ExploitRender via HEEx {@attrs} breaking out of the attribute
-
ExecutionInject event handler/script into HTML
-
ImpactExecute script in victim browser on interaction
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the affected application to construct HTML attribute *keys* (names) from untrusted input and then render them through HEEx |
| Impact | This is a genuine but conditional XSS (CWE-79) in a core Elixir/Phoenix library, and the signals point to moderate rather than urgent real-world risk. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:P, VC:L/VI:L) describes a network-reachable, low-complexity, unauthenticated flaw needing passive user interaction, scored 5.3 - consistent with a reflected/stored XSS of limited confidentiality and integrity impact. The vuln.today decision label is 'this_month' (not act_now/emergency), there is no CISA KEV entry and no EPSS score in the input, and no public exploit or PoC reference is provided (the listed GitHub links are the vendor patch and source commits, not exploit code). The dominant risk limiter is architectural: per the description and source evidence, the application is only affected if it builds HTML attribute *names* (keys) from untrusted input and renders them via HEEx |
| Exploit ScenarioDerived | An Elixir/Phoenix application renders a dynamic attribute map whose keys originate from user-controlled data (for example user-supplied |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Cross-site scripting in phoenix_html (from 1.0.0 before 3.3.5, and from 4.0.0 before 4.4.0) allows attackers who control HTML attribute names to break out of an attribute and inject new attributes or script into rendered markup. Only attribute keys are mishandled - attribute values are escaped correctly - so applications are exposed solely when they derive attribute names from untrusted input and render them through HEEx <tag {@attrs}>, content_tag/3, or a direct Phoenix.HTML.attributes_escape/1 call (before 3.0.0 the same code lived in Phoenix.HTML.Tag). No public exploit identified at time of analysis; the victim must load the rendered page, and vendor fixes are available in 3.3.5 and 4.4.0.
RemediationAI
Upgrade phoenix_html to 3.3.5 or 4.4.0, the versions in which the attribute-name escaping defect is fixed; the corresponding changes are in commits 6ad3a1d7960891a468d54636054a98e11dfb5111, d9e4e6b2d9be49e25fb6d6b4fdbb2008174f01a6, and a47dc8944a773b7e9273d9691dc6744ec793f1de (see the advisory at https://cna.erlef.org/cves/CVE-2026-117645.html). Because exploitation depends on the non-default pattern of deriving attribute names from user data, the compensating control is to stop doing that: construct attribute keys only from static atoms or a fixed allowlist, and never let request, database, or other untrusted data supply a key passed to HEEx <tag {@attrs}>, content_tag/3, or Phoenix.HTML.attributes_escape/1, including inside nested data, aria, and phx maps. Applications that already keep attribute names static need no workaround, but should still upgrade to pick up the corrected escaping.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
phoenix_html is the HTML-safety and tag-generation library extracted from the Elixir Phoenix framework; it provides the ~e sigil, safe/unsafe HTML handling, and the tag helpers used by HEEx templates. The root cause is CWE-79: attributes_escape/1 escapes attribute values but not attribute names. Its key_escape/1 helper passes a binary key through html_escape, which neutralizes quotes and angle brackets but not whitespace, so a key such as x onmouseover terminates the current attribute and begins a new one. Atom keys take a different path - they are only dasherized, so any character, including quotes and >, survives into the output. Nested data, aria, and phx keys follow the same vulnerable paths. In versions before 3.0.0 the equivalent code resided in Phoenix.HTML.Tag. The practical consequence is that a rendered element can gain attacker-chosen event handlers or additional attributes, yielding script execution in the victim's browser under the origin of the affected application's page.
Know when Phoenix Html gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Standard XSS: network reachable, no attacker privileges (PR:N) and victim interaction required (UI:R); script runs in the browser (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') vulnerability in phoenixframework phoenix_html allows an attacker who controls attribute names to inject attributes and script into rendered HTML via Phoenix.HTML.attributes_escape/1.
attributes_escape/1 in lib/phoenix_html.ex escapes attribute values but not attribute names. key_escape/1 passes a binary key through html_escape, which neutralizes quotes and angle brackets but not whitespace, so a key such as x onmouseover ends the attribute and starts a new one. An atom key is only dasherized, so any character passes, including quotes and >. Nested data, aria and phx keys take the same paths. An application is affected when it builds attribute keys from untrusted input and renders them through HEEx <tag {@attrs}>, content_tag/3, or a direct call. Before 3.0.0 the same code lived in Phoenix.HTML.Tag.
This issue affects phoenix_html: from 1.0.0 before 3.3.5 and from 4.0.0 before 4.4.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
EUVD-2026-114454
GHSA-jwcv-27cf-c7j5
NVD
CVE.org
EPSS
Exploit-DB