From 8eb7aea08b27c0f1bcdeec3171880a6fcf28aa9a Mon Sep 17 00:00:00 2001 From: SkyZeroZx <73321943+SkyZeroZx@users.noreply.github.com> Date: Sun, 28 Jun 2026 00:15:56 -0500 Subject: [PATCH] fix(core): reject dynamic script host elements The previous fix for GHSA-692r-grfm-v8x7 was incomplete because it rejected script tags only when locating an explicit host element. Dynamic component instantiation can also infer the host element from the component selector. Move the script-host rejection to the point where ComponentFactory has resolved the host element for either path, so createComponent rejects script hosts consistently. (cherry picked from commit 135f3755b4a2c4920c2f056bfe224a7bc067bb83) --- packages/core/src/render3/component_ref.ts | 10 ++++++++++ packages/core/src/render3/instructions/shared.ts | 7 ------- packages/core/test/acceptance/security_spec.ts | 13 +++++++++++++ .../bundle.golden_symbols.json | 1 + .../test/bundling/defer/bundle.golden_symbols.json | 1 + .../forms_reactive/bundle.golden_symbols.json | 1 + .../bundle.golden_symbols.json | 1 + .../bundling/hydration/bundle.golden_symbols.json | 1 + .../test/bundling/router/bundle.golden_symbols.json | 1 + .../standalone_bootstrap/bundle.golden_symbols.json | 1 + 10 files changed, 30 insertions(+), 7 deletions(-) diff --git a/packages/core/src/render3/component_ref.ts b/packages/core/src/render3/component_ref.ts index 5cca900962a..4baea34e9f6 100644 --- a/packages/core/src/render3/component_ref.ts +++ b/packages/core/src/render3/component_ref.ts @@ -193,6 +193,15 @@ function createHostElement(componentDef: ComponentDef, renderer: Render return createElementNode(renderer, tagName, namespace); } +function assertNotScriptHostElement(tagName: string | null | undefined): void { + if (tagName?.toLowerCase() === 'script') { + throw new RuntimeError( + RuntimeErrorCode.UNSAFE_VALUE_IN_SCRIPT, + ngDevMode && `"