Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Untrusted template rendered without auth or interaction yields arbitrary code execution escaping the template sandbox into the Node.js host, so PR:N/UI:N/AC:L with scope change and full C/I/A impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
Prompty is a markdown file format (.prompty) for LLM prompts. Prior to 0.1.5 and 2.0.0-beta.5, the TypeScript Nunjucks renderer evaluated untrusted .prompty template bodies with unrestricted JavaScript member access. An attacker-controlled template could traverse constructor and prototype properties to execute JavaScript in the host Node.js process. This issue is fixed in versions 0.1.5 and 2.0.0-beta.5.
Articles & Coverage 2
AnalysisAI
Server-side template injection leading to remote code execution in Microsoft's @prompty/core npm package (TypeScript runtime) allows an attacker who controls a .prompty template body to execute arbitrary JavaScript in the host Node.js process. The flaw affects @prompty/core versions <= 0.1.4 and the 2.0.0-alpha.1 through 2.0.0-beta.4 pre-releases, where the Nunjucks renderer permitted unrestricted member access, letting a malicious template walk constructor/prototype chains to reach a JavaScript execution primitive. No public exploit identified at time of analysis and it is not listed in CISA KEV, but the maximum CVSS of 10.0 and CWE-94 code-injection root cause make this a critical-priority patch for any app that renders untrusted, community-supplied, cloned, or LLM-generated .prompty files.
Technical ContextAI
Prompty defines a markdown-based (.prompty) file format for authoring LLM prompts, and the affected component is the TypeScript @prompty/core package's Nunjucks-based template renderer. Nunjucks is a Jinja-style server-side templating engine; by design it interpolates data into templates, but here the renderer evaluated the untrusted template body itself with unrestricted JavaScript member access. This is a textbook CWE-94 (Improper Control of Generation of Code / code injection) manifesting as server-side template injection (SSTI): because Nunjucks' memberLookup allowed traversal of properties like constructor, __proto__, and prototype, an attacker could pivot from an ordinary object to Function/constructor references and synthesize executable code. The CPE cpe:2.3:a:microsoft:prompty confirms the Microsoft-published Prompty product as the affected software, and the fix (PR #404) reinstates safety by overriding Nunjucks' memberLookup to reject __proto__/constructor/prototype, overriding callWrap to forbid any template function call, and deep-sanitizing render inputs to own-data-only, null-prototype values.
RemediationAI
Vendor-released patch: upgrade @prompty/core to 0.1.5 (for the 0.1.x line) or 2.0.0-beta.5 (for the 2.0.0 pre-release line) or later, per GHSA-w28w-gp39-m4p6 and PR https://github.com/microsoft/prompty/pull/404. The patched renderer sanitizes render inputs to own-data-only values, rejects __proto__/constructor/prototype member traversal, and disallows all template function calls, while preserving ordinary interpolation, conditionals, loops, and own nested data properties. If you cannot upgrade immediately, the concrete compensating control is to stop rendering untrusted .prompty content: restrict the renderer to first-party, trusted templates only, and treat community-supplied, cloned, or LLM-generated .prompty files as untrusted input that must not reach @prompty/core's Nunjucks renderer (trade-off: this disables any workflow that legitimately ingests external templates). Because exploitation runs with the Node.js process's privileges, also run the rendering service under least privilege and process isolation so a successful injection has reduced blast radius. Advisory and fix references: https://github.com/microsoft/prompty/security/advisories/GHSA-w28w-gp39-m4p6, https://github.com/microsoft/prompty/pull/404, https://github.com/microsoft/prompty/pull/405.
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-94 – Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-57382