Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Repo is delivered over the network (AV:N), no special conditions or auth (AC:L/PR:N), but the developer must open the folder (UI:R); arbitrary code yields full CIA in the user context with no scope change.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
The Angular Language Service VS Code Extension provides a rich editing experience for Angular templates. Prior to 21.2.4, the client-side Angular Language Service VS Code extension reads the custom TypeScript SDK paths typescript.tsdk and js/ts.tsdk.path directly from workspace configurations (.vscode/settings.json) without verifying VS Code Workspace Trust state or asking for user consent (located in client/src/client.ts). The client-side extension then passes the parsed settings path as a command-line argument (--tsdk) to the background Node.js language server process. During server initialization, the background language server resolves and dynamically imports (via standard Node.js require()) the module library tsserverlibrary.js relative to the workspace-specified custom directory path. An attacker can exploit this behavior by committing a repository containing a local malicious tsserverlibrary.js script inside a custom folder, and a crafted .vscode/settings.json file pointing to that folder. When a developer opens the repository folder in VS Code, the extension automatically attempts to initialize and load the server, which dynamically resolves, loads, and executes the malicious script silently in the background. This vulnerability is fixed in 21.2.4.
AnalysisAI
Arbitrary code execution in the Angular Language Service VS Code extension prior to 21.2.4 allows attackers to silently run code on a developer's machine simply by having them open a malicious repository in VS Code. The extension reads the typescript.tsdk and js/ts.tsdk.path workspace settings without checking Workspace Trust, then require()s a tsserverlibrary.js file from that attacker-controlled path. No public exploit identified at time of analysis, though the patch diff in PR #68857 clearly illustrates the exploit primitive.
Technical ContextAI
The vulnerability lives in the VS Code client portion of the Angular Language Service (vscode-ng-language-service/client/src/client.ts). VS Code exposes Workspace Trust to gate code execution paths triggered by untrusted .vscode/settings.json, but the extension bypassed this safeguard by calling config.get('js/ts.tsdk.path', config.get('typescript.tsdk', '')) and forwarding the value as a --tsdk command-line argument to the Node.js language server child process. During server initialization, Node.js's standard require() resolver loads tsserverlibrary.js relative to that attacker-supplied directory, producing arbitrary code execution in the language server process. Although NVD tags this CWE-79 (XSS), the actual root cause is closer to CWE-829 / CWE-94 (untrusted include / code injection via untrusted configuration), and CPE coverage (cpe:2.3:a:angular:angular) is overly broad - only the vscode-ng-language-service component is affected.
RemediationAI
Vendor-released patch: Angular Language Service VS Code extension 21.2.4 - upgrade via the VS Code Marketplace or your enterprise extension distribution channel. The fix in PR #68857 enforces vscode.workspace.isTrusted before honoring workspace-level tsdk paths and adds an explicit Allow/Disallow prompt persisted in workspaceState, falling back to globalValue otherwise. As a compensating control until upgrade, instruct developers to open unfamiliar repositories in VS Code's Restricted Mode and decline 'Trust' on repos they have not vetted, and audit existing repos for .vscode/settings.json files containing js/ts.tsdk.path or typescript.tsdk pointing inside the working tree - the trade-off is that legitimate workspaces using a vendored TypeScript SDK will load the bundled SDK instead, possibly producing version mismatches in diagnostics. Reference: https://github.com/angular/angular/security/advisories/GHSA-ccq4-xmxr-8hcq.
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-38258