Loading...
Skip to main content

CVE-2026-69149 — Vulnerability in @angular/platform-server — CVE...

HIGH

Angular SSR: Missing Fallback Raw-Content Serialization Escaping leads to Cross-Site Scripting (XSS)

Published August 3, 2026Updated August 3, 2026Source: osv

Summary

A Cross-Site Scripting (XSS) vulnerability exists in `@angular/platform-server`'s DOM emulation dependency (`domino`) when serializing the content of fallback raw-content elements (`<iframe>`, `<noembed>`, `<noframes>`, and `<noscript>`). When rendering dynamic text content inside fallback raw-content elements via template bindings, the template engine expects the browser to render the content safely. Under Server-Side Rendering (SSR), `domino` is configured with scripting enabled, meaning these elements are treated as raw-text elements. However, `domino`'s serializer previously did not escape text nodes within fallback raw-content elements (`<iframe>`, `<noembed>`, `<noframes>`, `<noscript>`) during DOM serialization. As a result, any occurrence of closing tags in the bound dynamic text was not escaped. The unescaped closing tag could be serialized directly into the output HTML. When parsed by a browser or re-parsed during SSR post-processing without preserving raw-content parser state, an injected closing tag closes the element early, allowing an injected script block to execute in the user's browser context, causing same-origin Cross-Site Scripting (XSS). ### Impact This vulnerability allows an attacker to perform same-origin Cross-Site Scripting (XSS) attacks against any user visiting an SSR-rendered page that binds user-controlled data inside fallback raw-content elements (`<iframe>`, `<noembed>`, `<noframes>`, `<noscript>`). This can lead to session hijacking, credentials theft, unauthorized actions on behalf of users, and defacement. ### Patched Versions - 22.0.7 - 21.2.19 - 20.3.27 ### Workarounds If you cannot immediately update your dependencies, you can mitigate this issue using any of the following approaches: - **Disable critical CSS inlining**: Critical CSS inlining in Angular SSR post-processes the rendered HTML using `domino`. Disabling this step prevents `domino` from re-parsing and re-serializing the HTML during server-side rendering. - In `angular.json`, set `inlineCritical` to `false` under style optimization options: ```json { "projects": { "my-app": { "architect": { "build": { "builder": "@angular/build:application", "options": { "optimization": { "styles": { "inlineCritical": false } } } } } } } } ``` - When rendering programmatically with `CommonEngine`, set `inlineCriticalCss: false` in your render options. - **Avoid binding user-controlled values** inside fallback raw-content elements (`<iframe>`, `<noembed>`, `<noframes>`, `<noscript>`). - **Sanitize user input** placed inside these elements to explicitly strip or escape closing tags before passing it to the template.

Advisory Timeline

  • First published August 3, 2026 (70 days ago).
  • Last revised August 3, 2026 — 0 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

npm
Update @angular/platform-server to 22.0.7 or later
npm install @angular/platform-server@22.0.7
npm
Update @angular/platform-server to 21.2.19 or later
npm install @angular/platform-server@21.2.19
npm
Update @angular/platform-server to 20.3.27 or later
npm install @angular/platform-server@20.3.27

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (4)

Affects 1 ecosystem: npm (1).

PackageEcosystemAffectedFixed In
@angular/platform-server
npm
All versionsRange-based data available
@angular/platform-server
npm
All versions22.0.7
@angular/platform-server
npm
All versions21.2.19
@angular/platform-server
npm
All versions20.3.27

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

  • CWE-79
    Cross-site Scripting (XSS)MITRE

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.1 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
P
Scope
—
Confidentiality
—
Integrity
—
Availability
—

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

Frequently Asked Questions

What is CVE-2026-69149?
Angular SSR: Missing Fallback Raw-Content Serialization Escaping leads to Cross-Site Scripting (XSS) This vulnerability has been assigned a severity rating of HIGH (CVSS score: 8.1/10).
How do I check if my project is affected by CVE-2026-69149?
CVE-2026-69149 affects @angular/platform-server. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-69149 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.1

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-vpx6-8pjr-4g3v

Related CVEs

  • CVE-2026-41423
    HIGH

    Angular: SSRF via protocol-relative and backslash URLs in Angular Platform-Server

  • CVE-2026-88056
    HIGH

    Angular: SSRF and Cross-Origin Credential Disclosure via URL Resolution Discrepancy in SSR

  • CVE-2026-32635
    HIGH

    Angular vulnerable to XSS in i18n attribute bindings

  • CVE-2026-50556
    HIGH

    @angular/platform-server: Missing `<noscript>` Raw-Text Serialization Escaping leads to Cross-Site Scripting (XSS) in Angular SSR

  • CVE-2026-88058
    HIGH

    Angular SSR: XSS via Unescaped Processing Instruction (<?...?>) Nodes in Fallback Raw-Content Elements

  • CVE-2026-69151
    HIGH

    Angular i18n: Cross-Site Scripting (XSS) via event-handler attributes

  • CVE-2026-88060
    HIGH

    Angular: SSR XSS via Unescaped <template> Content Across DocumentFragment Boundaries in Fallback Raw-Content Elements

  • CVE-2026-50168
    HIGH

    @angular/platform-server: URL Parser Differential leading to SSRF Allowlist Bypass

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies