Description
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.30, 21.2.22, and 22.1.4, Angular server-side rendering (SSR) in @angular/platform-server serializes ProcessingInstruction DOM nodes inside fallback raw-content elements without escaping matching ancestor closing tags. ProcessingInstruction data escaped greater-than characters but left less-than characters untouched and did not inspect fallback ancestors, so data such as a matching closing tag prematurely terminates noscript, iframe, noembed, or noframes containers. The vulnerable nodes cannot be authored through standard Angular templates; reachability requires application or library code using inject(DOCUMENT).createProcessingInstruction with attacker-controlled data or Renderer2 DOM insertion inside a fallback container. In HTML5 RAWTEXT parsing, the premature close causes subsequent sibling elements to be interpreted as live HTML and enables arbitrary JavaScript execution in a victim's browser. This issue is fixed in versions 20.3.30, 21.2.22, and 22.1.4.
Published: 2026-09-10
Score: 8.6 High
EPSS: n/a
KEV: No
Impact: Cross‑Site Scripting via server‑side rendering
Action: Immediate Patch
AI Analysis

Impact

This vulnerability allows an attacker to inject unescaped ProcessingInstruction nodes into server‑side rendered content. Because the node data is not fully escaped, a less‑than character can prematurely close enclosing raw‑content elements such as <noscript> or <iframe>, causing following HTML to be parsed as live markup. As a result, an attacker can execute arbitrary JavaScript in the victim’s browser, resulting in a cross‑site scripting (XSS) vulnerability. The flaw is related to CWE‑116 and CWE‑79.

Affected Systems

Angular applications that use the @angular/platform-server package prior to v20.3.30, v21.2.22, or v22.1.4 are vulnerable. The flaw occurs only when application or library code creates ProcessingInstruction nodes via inject(DOCUMENT).createProcessingInstruction with attacker‑controlled data, or uses Renderer2 to insert raw HTML into fallback containers. Client‑only Angular applications are not affected.

Risk and Exploitability

The vulnerability can be leveraged by serving a malicious SSR payload that contains a crafted ProcessingInstruction node. The exploit requires the attacker to influence the content that the server renders; therefore, it is most relevant for dynamic content that the application exposes to users. The CVSS score of 8.6 reflects a high impact and high exploitability, though the EPSS score is not available, so the current exploitation probability is unknown. The issue is not listed in CISA’s KEV catalog, but it remains a serious concern for all affected Angular deployments and should be remediated quickly.

Generated by OpenCVE AI on September 10, 2026 at 23:41 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Angular to v20.3.30, v21.2.22, or v22.1.4 or newer to apply the fixed rendering logic.
  • Scan your codebase for inject(DOCUMENT).createProcessingInstruction or Renderer2 DOM insertions that use attacker‑controlled data.
  • Implement a robust Content Security Policy that disallows inline scripts and blocks eval to limit the impact of any remaining XSS vector.
  • If upgrade is not immediately possible, temporarily disable server‑side rendering for routes that may inject raw content until the patch can be applied.

Generated by OpenCVE AI on September 10, 2026 at 23:41 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 11 Sep 2026 08:30:00 +0000

Type Values Removed Values Added
First Time appeared Angular
Angular angular
Vendors & Products Angular
Angular angular

Thu, 10 Sep 2026 19:00:00 +0000

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.30, 21.2.22, and 22.1.4, Angular server-side rendering (SSR) in @angular/platform-server serializes ProcessingInstruction DOM nodes inside fallback raw-content elements without escaping matching ancestor closing tags. ProcessingInstruction data escaped greater-than characters but left less-than characters untouched and did not inspect fallback ancestors, so data such as a matching closing tag prematurely terminates noscript, iframe, noembed, or noframes containers. The vulnerable nodes cannot be authored through standard Angular templates; reachability requires application or library code using inject(DOCUMENT).createProcessingInstruction with attacker-controlled data or Renderer2 DOM insertion inside a fallback container. In HTML5 RAWTEXT parsing, the premature close causes subsequent sibling elements to be interpreted as live HTML and enables arbitrary JavaScript execution in a victim's browser. This issue is fixed in versions 20.3.30, 21.2.22, and 22.1.4.
Title Angular: SSR XSS via Unescaped Processing Instruction (<?...?>) Nodes in Fallback Raw-Content Elements
Weaknesses CWE-116
CWE-79
References
Metrics cvssV4_0

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


cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-10T18:56:03.369Z

Reserved: 2026-09-09T21:22:45.434Z

Link: CVE-2026-88058

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-10T19:17:41.800

Modified: 2026-09-10T19:44:21.980

Link: CVE-2026-88058

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-11T08:15:15Z

Weaknesses
  • CWE-116

    Improper Encoding or Escaping of Output

  • CWE-79

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