Skip to main content
← All vulnerabilities
CVE-2026-4800GHSA-R5FR-RJXR-66JC

lodash vulnerable to Code Injection via `_.template` imports key names

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 4.18.1, 4.18.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: no
  • Technical impact: total

Summary

The fix for CVE-2021-23337 added validation for the variable option in .template but did not apply the same validation to options.imports key names, and both paths flow into the same Function() constructor sink. When an application passes untrusted input as options.imports key names, an attacker can inject default-parameter expressions that execute arbitrary code at template compilation time. Additionally, .template uses assignInWith to merge imports, which enumerates inherited properties via for..in, so if Object.prototype has been polluted by another vector the polluted keys are copied into the imports object and passed to Function(). The issue is fixed in 4.18.1 for lodash, lodash-es, lodash-amd, and lodash.template. As a workaround, do not pass untrusted input as key names in options.imports; use only developer-controlled, static key names.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: no · Technical impact: total

  3. Record last updated

Affected versions

  • lodash lodash

    From 4.0.0 · fixed in 4.18.1

  • lodash lodash-es

    From 4.0.0 · fixed in 4.18.1

  • lodash lodash-amd

    From 4.0.0 · fixed in 4.18.1

  • lodash lodash.template

    From 4.0.0 · fixed in 4.18.1

  • lodashnpm

    From 4.0.0 · fixed in 4.18.0

  • lodash-esnpm

    From 4.0.0 · fixed in 4.18.0

  • lodash-amdnpm

    From 4.0.0 · fixed in 4.18.0

  • lodash.templatenpm

    From 4.0.0 · fixed in 4.18.0

References 2

GitHub · lodash/lodash

cna.openjsf.org