CVE-2026-50556 Angular: Missing `<noscript>` Raw-Text Serialization Escaping leads to Cross-Site Scripting (XSS) in Angular SSR

High 8.6 Published Updated

An XSS vulnerability in Angular SSR allows attackers to execute arbitrary scripts by injecting unescaped closing tags into noscript elements.

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-50556?

CVE-2026-50556 is a high-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.16, 20.3.24, and 19.2.25, a Cross-Site Scripting (XSS) vulnerability exists in @angular/platform-server's DOM emulation dependency (domino) when serializing the content of <noscript> elements. When rendering dynamic text content inside a <noscript> element via template bindings (such as {{ value }} or [textContent]), the template engine expects the browser to render the content safely. Under Server-Side Rendering (SSR), domino is configured with scripting enabled, meaning <noscript> is treated as a raw-text element. However, domino's serializer completely omitted <noscript> from the list of raw-text elements requiring closing-tag escaping during DOM serialization. As a result, any occurrence of </noscript> in the bound dynamic text was never escaped under any circumstances. The unescaped closing tag was serialized directly into the output HTML (e.g. <noscript></noscript><script>alert(1)</script></noscript>). When parsed by a browser, it closes the <noscript> block early, allowing the injected <script> block to execute in the user's browser context, causing same-origin Cross-Site Scripting (XSS). This vulnerability is fixed in 22.0.0-rc.2, 21.2.16, 20.3.24, and 19.2.25.

Weakness: CWE-79

Which versions are affected by CVE-2026-50556?

10 open source packages ship an affected version, including @angular/platform-server. It affects 1 product.

PackageAffectedFixed in
@angular/platform-server npmAll versions to 18.2.14None
@angular/platform-server npmAll versions to 18.2.14None
@angular/platform-server npmFrom 19.0.0-next.019.2.25
@angular/platform-server npmFrom 19.0.0-next.019.2.25
@angular/platform-server npmFrom 20.0.0-next.020.3.24
@angular/platform-server npmFrom 20.0.0-next.020.3.24
4 more packages
@angular/platform-server npmFrom 21.0.0-next.021.2.16
@angular/platform-server npmFrom 21.0.0-next.021.2.16
@angular/platform-server npmFrom 22.0.0-next.022.0.0-rc.2
@angular/platform-server npmFrom 22.0.0-next.022.0.0-rc.2

Products include Angular Angular.

How do I fix CVE-2026-50556?

Upgrade @angular/platform-server to a fixed version for your release line: 19.2.25, 20.3.24, 21.2.16 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-50556 being exploited?

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

Sources

Also known as DEBIAN-CVE-2026-50556, GHSA-gxx4-3xcv-f8qx, UBUNTU-CVE-2026-50556.

Is CVE-2026-50556 in your software?

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

Check your SBOMs for free