CVE-2026-88057

Angular: Sanitization bypass via directive host bindings on concrete host elements in @angular/core and @angular/compiler

Published Sep 10, 2026 CVSS 4.0 · 5.3 Medium EPSS < 1% KEV · Not listed
Description
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.28, 21.2.20, and 22.1.0, Angular's compiler and runtime in @angular/core and @angular/compiler could omit or select an incorrect sanitizer for security-sensitive directive host bindings because SecurityContext was derived from the declaring directive or component selector rather than the concrete host element. The mismatch is reachable through hostDirectives composition, inherited HostBinding declarations, createComponent with a custom hostElement or dynamic directives, SVG/MathML namespace elements, and tag-neutral selectors such as :not(...). Attacker-controlled href, src, action, xlink:href, or data values can therefore reach DOM attributes without Angular's built-in sanitizer and execute arbitrary JavaScript in the user's browser context. Applications unable to upgrade can use DomSanitizer.sanitize with SecurityContext.URL before assignment or restrict inputs to validated HTTP and HTTPS URL schemes. This issue is fixed in versions 20.3.28, 21.2.20, and 22.1.0.

Analysis

AI-generated

Technical impact

Angular vulnerabilities in earlier releases allowed an attacker to inject malicious script content into DOM attributes by exploiting sanitized directive host bindings. The flaw arose because the compiler and runtime chose a sanitizer based on the component or directive selector rather than the concrete host element, enabling the use of URLs, hrefs, or data attributes that bypass Angular’s built‑in sanitization. This defect could lead to execution of arbitrary JavaScript in the user’s browser, compromising confidentiality and integrity of the application. The weakness is an example of CWE‑79.

Affected Systems

The affected products are the angular:angular framework, specifically the @angular/core and @angular/compiler libraries in versions prior to 20.3.28, 21.2.20, and 22.1.0. Angular versions earlier than these releases are susceptible; the issue does not affect later releases.

Risk and Exploitability

The vulnerability has a base CVSS score of 5.3, indicating a moderate risk. No EPSS score is available, and the vulnerability is not listed in the CISA KEV catalog. An attacker can exploit the flaw by creating or manipulating host directives, inherited HostBinding declarations, or using custom host elements—also via SVG/MathML or tag‑neutral selectors. By controlling attributes such as href or src, the attacker can inject JavaScript that runs in the client’s context. The exploit path requires legitimate Access to the application’s code or the ability to inject directives or components, which many web applications expose through user input.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Angular to version 20.3.28, 21.2.20, or 22.1.0 or later, as these releases include a fix for the sanitizer mismatch.
  • If an upgrade is not immediately possible, apply the temporary workaround by calling DomSanitizer.sanitize with SecurityContext.URL before assigning user‑provided values to sensitive attributes.
  • Restrict input values to explicitly validated HTTP or HTTPS URLs and avoid using user input for attributes that can trigger scripts.

Generated by OpenCVE AI on September 10, 2026 at 22:33 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Github GHSA Github GHSA GHSA-hh8m-fm6v-7cvg Angular: Sanitization bypass via directive host bindings on concrete host elements in @angular/core and @angular/compiler
History
Type Values Removed Values Added
CPEs cpe:2.3:a:angular:angular:*:*:*:*:*:node.js:*:*
Metrics cvssV3_1

{'score': 5.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N'}

cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N'}

threat_severity

Moderate

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Angular
Angular angular
Vendors & Products Angular
Angular angular
Type Values Removed Values Added
Description Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.28, 21.2.20, and 22.1.0, Angular's compiler and runtime in @angular/core and @angular/compiler could omit or select an incorrect sanitizer for security-sensitive directive host bindings because SecurityContext was derived from the declaring directive or component selector rather than the concrete host element. The mismatch is reachable through hostDirectives composition, inherited HostBinding declarations, createComponent with a custom hostElement or dynamic directives, SVG/MathML namespace elements, and tag-neutral selectors such as :not(...). Attacker-controlled href, src, action, xlink:href, or data values can therefore reach DOM attributes without Angular's built-in sanitizer and execute arbitrary JavaScript in the user's browser context. Applications unable to upgrade can use DomSanitizer.sanitize with SecurityContext.URL before assignment or restrict inputs to validated HTTP and HTTPS URL schemes. This issue is fixed in versions 20.3.28, 21.2.20, and 22.1.0.
Title Angular: Sanitization bypass via directive host bindings on concrete host elements in @angular/core and @angular/compiler
Weaknesses CWE-79
References
Metrics cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N'}

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Sep 11, 2026, 8:32 PM
Reserved
Sep 9, 2026, 9:22 PM
Status
Analyzed
Published
Sep 10, 2026, 7:17 PM
Modified
Sep 29, 2026, 7:02 PM
Severity
Moderate
Public date
Sep 10, 2026, 6:46 PM