CVE-2026-73649: Velocity.js: Remote Code Execution via property-read to Function constructor (bypass of CVE-2026-44966 fix)
Velocity.js is a JavaScript implementation of the Apache Velocity template engine. Prior to 2.1.7, the earlier fix for CVE-2026-44966 filtered constructor, __proto__, and prototype only in the #set assignment handler in src/compile/set.ts, while property-read expressions in src/compile/references.ts remained unfiltered. The getReferences() flow called getAttributes(), whose property access allowed an attacker-controlled template to traverse constructor.constructor to the JavaScript Function constructor. The #set handler validated only the assignment target and did not inspect the right-hand property-read expression, allowing arbitrary shell commands, environment-variable access, cloud-credential access, and internal-network access in the server process. This issue is fixed in version 2.1.7.
Security readout for executives and security teams
Plain-English summary
Velocity.js before 2.1.7 can let an attacker-controlled template execute code with the application’s permissions. Successful exploitation could expose environment variables and cloud credentials, reach internal services, alter data, or disrupt the server. Risk depends on whether untrusted users or upstream systems can influence templates.
Executive priority
Prioritize immediate remediation for public or multi-tenant systems that render attacker-influenced templates. Upgrade promptly elsewhere after confirming inventory. If exposure existed, involve incident response to assess credential access and server activity; patching prevents future exploitation but does not resolve possible prior compromise.
Technical view
A bypass of the CVE-2026-44966 fix left property-read expressions unfiltered. Attackers could traverse JavaScript constructor properties to reach the Function constructor because validation covered the assignment target but not the right-hand expression. This is CWE-94 remote code execution with CVSS 3.1 score 9.8, fixed in Velocity.js 2.1.7.
Likely exposure
Applications using shepherdwind Velocity.js versions below 2.1.7 are affected. Exposure is highest where templates are supplied or influenced by unauthenticated users, tenants, integrations, or other untrusted sources. The supplied evidence does not identify specific deployments, default configurations, or downstream products.
Exploitation context
The vulnerability is remotely exploitable with low complexity, no privileges, and no user interaction according to the supplied CVSS vector. The bundle marks it absent from KEV, and the cited material provided here does not establish active exploitation in the wild. Treat internet-reachable, attacker-influenced template rendering as urgent.
Researcher notes
This is a validation-scope failure in the earlier CVE-2026-44966 remediation: filtering in the assignment handler did not cover property reads processed through the references path. Assessment should focus on template provenance, every rendering entry point, process privileges, secret availability, and network reachability. No public exploitation evidence is established by the supplied bundle.
Mitigation direction
Upgrade Velocity.js to version 2.1.7 or later using the vendor release.
Temporarily prevent untrusted parties and integrations from supplying or modifying templates.
Restrict the rendering process from credentials, sensitive environment variables, and unnecessary internal-network access.
Review the vendor advisory, patch, and release notes before restoring untrusted template rendering.
Validation and detection
Inventory applications and dependency lockfiles for shepherdwind Velocity.js versions below 2.1.7.
Trace whether users, tenants, integrations, or external data can influence rendered template source.
Confirm deployed artifacts resolve Velocity.js 2.1.7 or later, not merely package manifests.
Use safe regression tests to verify prohibited property traversal is rejected without executing system operations.
Review template-rendering periods for anomalous process activity, credential access, or unexpected internal connections.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · medium confidence lookup
CWE-94: Code execution behavior lookup
Code execution and unsafe deserialization weaknesses often justify reviewing execution behavior and process telemetry. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references code or command execution, so execution technique review may help defensive triage. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
The CVE wording references authentication or credential exposure, so valid-account and credential-access review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
1ADP providers
5Source links
SSVC decision data
CISA-ADPCISA Coordinator
Timestamp
Version
2.0.3
Exploitation: pocAutomatable: yesTechnical Impact: total
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-94 · source CWE mapping
Improper Control of Generation of Code ('Code Injection')
Improper Control of Generation of Code ('Code Injection') represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.