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
Payload is delivered over the network via source/npm (AV:N, AC:L, PR:N), but requires the developer to hover and click (UI:R); successful execution fully compromises the host (C/I/A:H, unchanged scope).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
The Angular Language Service VS Code Extension provides a rich editing experience for Angular templates. the client-side Angular Language Service VS Code extension configures the tooltip Markdown renderer with the isTrusted: true option (located in client/src/client.ts). This setting instructs VS Code to trust all rendered content it receives, which enables active elements such as command: URIs. However, the background Angular Language Server process fails to escape or sanitize brackets, raw links, and control characters from JSDoc strings before forwarding the hover Markdown content (located in server/src/handlers/hover.ts and server/src/text_render.ts). An attacker can leverage this behavior by crafting a project TypeScript or JavaScript file (or a third-party npm package dependency) containing a malicious JSDoc tooltip with an embedded active command link. When a developer hovers over the target symbol to render the tooltip and clicks the malicious link, the IDE executes the command sequence directly on the developer's host machine. Prior to 21.2.4, This vulnerability is fixed in 21.2.4.
AnalysisAI
Command injection via untrusted Markdown rendering in the Angular Language Service VS Code extension (versions prior to 21.2.4) allows attackers to execute arbitrary commands on a developer's host when the developer hovers over and clicks a crafted JSDoc tooltip. The client trusts all rendered Markdown (isTrusted: true) while the language server fails to sanitize JSDoc content, enabling embedded command: URIs to fire from malicious source files or npm dependencies. No public exploit identified at time of analysis, but the supply-chain reach via npm packages makes this a notable developer-workstation risk.
Technical ContextAI
The vulnerability lives in the integration between the Angular Language Server (LSP backend) and its VS Code client. In client/src/client.ts, the Markdown renderer for hover tooltips is instantiated with isTrusted: true, which authorizes VS Code to render and activate command: URIs embedded in Markdown links. In server/src/handlers/hover.ts and server/src/text_render.ts, the server emits hover content built from JSDoc comments without escaping brackets, raw links, or control characters. This is a classic CWE-79 cross-site-scripting class flaw adapted to the LSP/Electron context: untrusted code-derived content is rendered in a privileged UI surface, where command: links execute against the VS Code command palette with the user's privileges. Affected CPEs are angular:angular and angular:angular.ng-template (the Angular Language Service ships under the Angular umbrella).
RemediationAI
Vendor-released patch: 21.2.4 - upgrade the Angular Language Service VS Code extension (angular.ng-template) to 21.2.4 or later via the VS Code Marketplace, per advisory https://github.com/angular/angular/security/advisories/GHSA-q94j-3wj3-4xcm. As interim compensating controls before patching, disable or uninstall the Angular Language Service extension in projects sourced from untrusted repositories, open such projects in VS Code Restricted Mode (which suppresses command: URI execution from Markdown but also reduces extension functionality), and avoid hovering on symbols in untrusted source files or third-party dependencies. Audit recently added npm dependencies in Angular projects for suspicious JSDoc content as a detection measure; note that Restricted Mode and disabling the extension will both degrade Angular template editing features until the fix is applied.
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-38264