Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessInject crafted component spec with sink properties
-
DeliveryRenderer applies unfiltered dynamic attributes to element
-
ExploitUser renders custom component
-
ExecutionMalicious DOM sink/handler executes in page
-
ImpactDisclose limited data or alter UI
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Dynamic code resource control
|
| Exploitation Conditions | Exploitation requires the custom-element rendering path to be active - the reproduction in PR 3107 sets enableCustomElements = true on the a2ui-root before the crafted childComponents are rendered - and requires that the attacker can influence the component tree / property map consumed by Root.renderComponentTree. Limiting factors matching the CVSS 4.0 vector: PR:L means the attacker needs some privilege or trusted position to supply the component data (not fully anonymous), and UI:P means a user must render/view the attacker-influenced surface for the injected sink to fire. Impact is confined to the viewing page (no subsequent-system scope), and a deployment that never enables custom elements or never renders untrusted component properties is not exposed. No fully-merged vendor fix exists yet. |
| Impact | Signals point to a genuine but moderate-priority issue rather than an urgent one. The input CVSS 4.0 base score is 5.1 (medium) with AV:N/AC:L/AT:N/PR:L/UI:P and uniformly Low impact (VC:L/VI:L/VA:L, no subsequent-system impact), and vuln.today's decision label is 'this_month' - not act_now or emergency. There is no CISA KEV listing and no EPSS score was supplied, so there is no evidence of active or probable mass exploitation; absence of EPSS here is a data gap, not a low-risk signal. No reference is labeled as working exploit code - the GitHub and VulDB links are an advisory, an issue, and the fix pull request - so this should be treated as no public exploit identified at time of analysis. The vendor fix is NOT yet in place: the pull request (PR 3107) awaits acceptance, so affected deployments cannot fully remediate by updating yet. Net: a real, confirmed code-level flaw (property/attribute filtering is absent in the custom-element render path) with limited blast radius and no demonstrated exploitation - worth remediating this cycle, consistent with the 'this_month' label, but not an emergency. |
| Exploit ScenarioDerived | An agent or data source feeding the A2UI renderer supplies a component tree in which a custom component's 'properties' map includes dangerous DOM sinks (for example innerHTML, onclick, onerror, src, href, srcdoc). Because Root.renderComponentTree assigns these dynamically-determined attributes onto the custom element without restricting them to schema-allowed, exposed properties, the sink is set and runs in the viewing user's page context when the UI is rendered, enabling script injection and limited information disclosure. No public exploit code was identified; the fix PR's test suite demonstrates the exact blocked properties, confirming the mechanism. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Arbitrary DOM property injection in the a2ui Lit renderer (versions up to and including 0.12.0) allows an attacker who can influence the component tree consumed by Root.renderComponentTree to set properties the receiving custom element never intended to expose - including DOM sinks such as innerHTML, srcdoc, href, formaction and inline event handlers - which can execute script in the page that renders the surface. The rendering path only fires when custom elements are enabled on the a2ui-root (the reproduction in PR 3107 sets enableCustomElements = true), and a victim must view the attacker-influenced surface, so the issue is limited to the viewing page with low confidentiality, integrity and availability impact. No public exploit code was identified at time of analysis and the fix PR 3107 is still awaiting acceptance, so no released patched version is confirmed; priority is this-month rather than urgent.
RemediationAI
No vendor-released patch is confirmed: the corrective change is upstream pull request https://github.com/a2ui-project/a2ui/pull/3107, which awaits acceptance, so treat the allowlist fix (getAllowedCustomProperties / applyCustomElementProperties in the 0.8 Lit root renderer) as available-but-unmerged rather than shipped, and track issue https://github.com/a2ui-project/a2ui/issues/3076 for merge and release status. Until a release containing the PR is published, the most direct control is to avoid the exposed path: if your a2ui-root sets enableCustomElements = true, disable it, accepting that registered custom components will no longer render on the surface. If custom elements are required, restrict the component trees and property maps fed to Root.renderComponentTree to trusted producers, since the assessed prerequisite is that the attacker can influence that data; this narrows exposure but does not filter the sinks themselves. Deployments that never enable custom elements are not exposed per the current analysis. Re-test after upgrading, since the fix changes property-assignment semantics and may break components that relied on undeclared or @state properties being passed through.
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
a2ui is a Google-originated project for agent-driven UI, and its TypeScript/Lit renderer builds web components dynamically from a declarative component tree. The flaw is CWE-913 (Improper Control of Dynamically-Managed Code Resources): Root.renderComponentTree, in typescript/renderers/lit/src/0.8/ui/root.(js|ts), assigned the attacker-supplied property map onto the instantiated custom element without checking which properties the element actually declares as public. Because Lit elements expose @property accessors and reflect many of them onto DOM attributes, unrecognised keys could reach browser sinks (innerHTML, outerHTML, srcdoc, src, href, formaction, the is built-in-customization hook, style, onclick/onerror) as well as internal bookkeeping such as surfaceId, id, slot and dataContextPath, and even @state fields meant to stay private. The PR 3107 test case registers a widget with a JSON schema and asserts that only schema-declared properties (titleText) are written, while unexposed properties, @state accessors, DOM sinks, event handler functions, data-* keys and spoofed routing fields are all dropped. The proposed fix therefore adds getAllowedCustomProperties and applyCustomElementProperties, deriving an allowlist from the component's registered schema and filtering assignments before they reach the element - an allowlist rather than a denylist, which matters because the sink set in the DOM is open-ended. The trigger requires the custom-element rendering path to be enabled and an attacker-supplied property map; the underlying component registry and schema plumbing are unchanged.
Know when the next one hits your stack
- 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:L/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Attacker must supply component data (PR:L) and a user must render it (UI:R); unfiltered attribute assignment yields limited DOM-sink injection, so C/I/A are each Low.
Primary rating from Vendor (vuldb).
CVSS VectorVendor: vuldb
DescriptionCVE.org
A vulnerability was determined in a2ui-project a2ui up to 0.12.0. This issue affects the function Root.renderComponentTree of the file src/0.8/ui/root.js of the component Renderer. Executing a manipulation can lead to dynamically-determined object attributes. The attack may be launched remotely. The pull request to fix this issue awaits acceptance.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
EUVD-2026-112546
GHSA-4c8v-q557-73fw
NVD
CVE.org
VulDB
Exploit-DB