From d7f70616a03aa00274f0a91c49f7a6fe4b2e3535 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. --- 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 + .../create_component/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 + 11 files changed, 31 insertions(+), 7 deletions(-) diff --git a/packages/core/src/render3/component_ref.ts b/packages/core/src/render3/component_ref.ts index 0e664e9a1b9..71c5056cc0d 100644 --- a/packages/core/src/render3/component_ref.ts +++ b/packages/core/src/render3/component_ref.ts @@ -183,6 +183,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 && `"