External risk intelligence

Velocity.js Prototype Pollution Leading to DoS or RCE

CVE advisorySeverity: CRITICAL (CVSS 9.8)

CVE-2026-44966

Velocity.js is a template engine library used within web applications to render server-side content. Since these applications frequently process user-supplied templates or data to generate dynamic web pages or APIs, the vulnerable surface is commonly reachable via internet-facing web services.

Remote Code Execution

Shepherdwind Velocity Js

2.1.5 and earlier

Halo Surface Signal: 4 out of 5 — likely to be public-facing.

External exposure likelihood

Horizon Alert

Summary of the vulnerability and why it matters

A prototype pollution vulnerability exists in Velocity.js, a JavaScript template engine. This flaw can allow attackers to alter the application's core JavaScript objects if they can control the templates being processed, potentially leading to service disruptions or unauthorized code execution. The main concern is confirming relevance and exposure.

  • JavaScript templates can be poisoned.
  • Attackers could disrupt services or run code.
  • Confirm if Velocity.js is used.

Attack Path

How an attacker could exploit the issue

An attacker could exploit this vulnerability by submitting specially crafted input to an application that uses a vulnerable version of Velocity.js to process templates. Because the vulnerability lies within the `#set` directive, an attacker could manipulate it to alter the `Object.prototype`, which could then lead to a denial of service or even remote code execution.

  • Requires no authentication or privileges.
  • Triggered by processing attacker-controlled templates.
  • Risk of denial of service or code execution.

Live Threat

Current exploitation, exposure, and threat context

When an application uses Velocity.js to process attacker-controlled Velocity templates, especially through #set directives, it could allow for modifications to Object.prototype. This may lead to a Denial of Service or, depending on the server's configuration, Remote Code Execution.

  • JavaScript object prototypes could be altered.
  • Processing user-controlled Velocity templates.
  • Service disruption or code execution.

Operational Fix

Recommended remediation, mitigation, and detection steps

Application owners and platform teams are likely responsible for managing Velocity.js instances. The first step is to identify all deployments of Velocity.js within your environment, confirm if they process untrusted input or are exposed externally, and then ascertain the business criticality and responsible owner for each instance to prioritize remediation efforts.

  • Identify Velocity.js deployments.
  • Verify external reachability and criticality.
  • Plan remediation with application owners.

Supplementary metadata

Validate whether this threat affects your internet-facing exposure.

Halo Threat Intelligence helps prioritize remediation with Halo Surface Signal and H/A/L/O context. Start exposure validation with a free external attack surface trial.

Frequently asked questions

What is velocity.js and why do developers use it?

Velocity.js is a JavaScript-based implementation of the Apache Velocity template engine. Developers use this library in web applications to dynamically generate content, such as HTML pages or API responses, by merging data with predefined templates on the server side.

How does CVE-2026-44966 enable prototype pollution?

This vulnerability, classified as CWE-1321, occurs when the engine improperly handles #set directives in templates. By crafting specific inputs, an attacker can manipulate the core JavaScript Object.prototype. This effectively pollutes the global object, allowing unauthorized modifications that can destabilize the application or, in certain environments, run arbitrary code.

Do I need to worry about templates I process internally?

The trigger for this bug is specifically the processing of attacker-controlled template content. If your Velocity.js implementation only renders trusted, static templates that users cannot influence or submit, the condition for exploiting the #set directive flaw is not met.

Is my application vulnerable according to Halo Surface Signal?

Halo Surface Signal indicates that because Velocity.js is frequently used to render dynamic content from user-supplied data, the vulnerable surface is often reachable via internet-facing services. You should assess whether your application accepts external input that influences template structure.

How should I respond to this vulnerability?

Start by identifying all instances of Velocity.js across your infrastructure to determine which applications process untrusted input. Once located, verify their external reachability and business impact, then coordinate with the respective application owners to prioritize necessary updates or containment strategies.

References