CVE-2026-50557 Angular: Template and Attribute Namespace Sanitization Bypass (XSS)

Medium 5.3 Published Updated

Attackers can bypass Angular's sanitization using namespaced elements to execute arbitrary JavaScript in the victim's browser.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2026-50557?

CVE-2026-50557 is a medium-severity cross-site scripting vulnerability in angular, published on 22 Jun 2026. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

Official description

Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 22.0.0-rc.2, 21.2.15, 20.3.22 and 19.2.22, an issue in the @angular/compiler and @angular/core packages allows bypassing element and attribute sanitization/validation through specific namespace workarounds. Specifically, namespaced script elements (e.g., <svg:script> or <:svg:script>) were not properly identified as script elements by the Angular template preparser, allowing them to pass through template compilation without being stripped. Furthermore, security context schema mappings for element attributes did not consistently handle attributes within namespaced elements (like SVG and MathML), opening up gaps where malicious namespaced attributes could bypass runtime and compile-time sanitizers. Combined, these flaws enable an attacker who can inject or supply a template/tag structure with custom namespaces to bypass Angular's script-stripping logic and attribute sanitizers, leading to client-side Cross-Site Scripting (XSS). This vulnerability is fixed in 22.0.0-rc.2, 21.2.15, 20.3.22 and 19.2.22.

Weakness: CWE-79

Which versions are affected by CVE-2026-50557?

20 open source packages ship an affected version, including @angular/compiler and @angular/core. It affects 1 product.

PackageAffectedFixed in
@angular/compiler npmAll versions to 18.2.14None
@angular/compiler npmAll versions to 18.2.14None
@angular/compiler npmFrom 19.0.0-next.019.2.22
@angular/compiler npmFrom 19.0.0-next.019.2.22
@angular/compiler npmFrom 20.0.0-next.020.3.22
@angular/compiler npmFrom 20.0.0-next.020.3.22
14 more packages
@angular/compiler npmFrom 21.0.0-next.021.2.15
@angular/compiler npmFrom 21.0.0-next.021.2.15
@angular/compiler npmFrom 22.0.0-next.022.0.0-rc.2
@angular/compiler npmFrom 22.0.0-next.022.0.0-rc.2
@angular/core npmAll versions to 18.2.14None
@angular/core npmAll versions to 18.2.14None
@angular/core npmFrom 19.0.0-next.019.2.22
@angular/core npmFrom 19.0.0-next.019.2.22
@angular/core npmFrom 20.0.0-next.020.3.22
@angular/core npmFrom 20.0.0-next.020.3.22
@angular/core npmFrom 21.0.0-next.021.2.15
@angular/core npmFrom 21.0.0-next.021.2.15
@angular/core npmFrom 22.0.0-next.022.0.0-rc.2
@angular/core npmFrom 22.0.0-next.022.0.0-rc.2

Products include Angular Angular.

How do I fix CVE-2026-50557?

Upgrade @angular/compiler to a fixed version for your release line: 19.2.22, 20.3.22, 21.2.15 or 22.0.0-rc.2.

Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.

Is CVE-2026-50557 being exploited?

There is no known exploitation of CVE-2026-50557 in the wild and no public exploit code.

Sources

Also known as DEBIAN-CVE-2026-50557, GHSA-f3m7-gqxr-g87x, UBUNTU-CVE-2026-50557.

Is CVE-2026-50557 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free