Angular platform-server, Cross-Site Scripting, CVE-2023-26159 (Medium) -DC-Jun2026-411

Listen to this Post

The vulnerability resides in the `domino` library, a server-side DOM implementation used by `@angular/platform-server` for Angular Server-Side Rendering (SSR). When Angular renders a template that binds user-controlled data inside a `

</code>), the SSR process relies on `domino` to emulate the browser DOM. Under normal browser behavior, `<noscript>` is a raw-text element that should not parse nested HTML tags. However, during SSR, `domino` is initialized with scripting enabled, causing it to treat `<noscript>` as a container that still expects proper escaping of its closing tag. In the vulnerable versions, <code>domino</code>'s HTML serializer incorrectly omitted `<noscript>` from the list of raw-text elements that require closing-tag escaping. Consequently, if an attacker injects the string `</noscript><script>alert(1)</script>` into a bound value inside <code><noscript></code>, the serializer directly writes the unescaped `</noscript>` into the output HTML. The serialized output becomes <code><noscript>... </noscript><script>alert(1)</script></noscript></code>. When a browser parses this, the first `</noscript>` closes the original `<noscript>` block early, and the subsequent `<script>` block is executed as live HTML. Because the page origin remains unchanged, this is a same-origin XSS attack. The vulnerability affects any Angular SSR application that renders user-supplied strings inside a `<noscript>` element without prior sanitization. It enables session hijacking, credential theft, or arbitrary actions on behalf of the victim. Patched versions of Angular (22.0.0-rc.2, 21.2.16, 20.3.24, 19.2.25) update `domino` to a fixed release (≥2.1.4) where `</noscript>` is properly escaped as <code>&lt;/noscript&gt;</code>. Workarounds include avoiding user data inside `<noscript>` or stripping `</noscript>` tags from inputs.

<h2 style="color: blue;">DailyCVE Form:</h2>

Platform: Angular SSR
Version: <19.2.25,<20.3.24,<21.2.16
Vulnerability: XSS via noscript
Severity: Medium (6.1)
date: 2023-08-10
<h2 style="color: blue;">Prediction: Fixed 2024-03-20</h2>

<h2 style="color: blue;">What Undercode Say:</h2>

[bash]
Check Angular version
ng version | grep Angular
Detect vulnerable domino version
npm list domino
Test payload in SSR template
echo "<noscript>{{ userInput }}</noscript>" > test.component.html
Simulate malicious input
curl -X POST https://target.com/ssr -d "userInput=</noscript><script>alert(1)</script>"

Exploit:

<!-- Attacker-controlled input bound inside <noscript> -->
<noscript>{{ user.profile }}</noscript>
<!-- user.profile = "</noscript><script>fetch('/cookie')</script>" -->
<!-- Rendered output causes script execution -->

Protection:

  • Update to Angular >=19.2.25, >=20.3.24, >=21.2.16, or 22.0.0-rc.2
  • Sanitize user input: escape `` as `</noscript>`
    - Avoid `
  • Use Angular's built-in DomSanitizer with bypass disabled

Impact:

  • Same-origin XSS leads to session hijacking
  • Credential theft (cookies, tokens)
  • Unauthorized actions (CSRF-like)
  • Page defacement and phishing

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
projects@undercode.co.uk
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top