Vulnerability advisory

CVE-2026-4800

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

Published Updated OSV record ↗

Also known as GHSA-r5fr-rjxr-66jc

Severity
  • CVSS 3.xCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected versions

Repository

Affected commitsFixed by commit
GIT github.com/lodash/lodash ↗
d35a9c40beb594d09814ba7f7673b81d4d67a816 to before 5857260e49359f36999a537cb9c380861e36a61c5857260e49359f36999a537cb9c380861e36a61c
Also listed as affected (61)
  • 4.18.0-npm-packages
  • 4.15.0-npm-packages
  • 4.14.0-npm-packages
  • 4.13.0-npm-packages
  • 4.12.1-npm-packages
  • 4.11.2-npm-packages
  • 4.11.1-npm-packages
  • 4.12.0-npm-packages
  • 4.10.2-npm-packages
  • 4.10.1-npm-packages
  • 4.11.0-npm-packages
  • 4.10.0-npm-packages
  • 4.9.1-npm-packages
  • 4.8.1-npm-packages
  • 4.8.0-npm-packages
  • 4.9.0-npm-packages
  • 4.7.1-npm-packages
  • 4.7.0-npm-packages
  • 4.6.2-npm-packages
  • 4.6.1-npm-packages
  • 4.6.0-npm-packages
  • 4.5.7-npm-packages
  • 4.5.5-npm-packages
  • 4.5.4-npm-packages
  • 4.5.6-npm-packages
  • 4.5.2-npm-packages
  • 4.5.1-npm-packages
  • 4.5.3-npm-packages
  • 4.5.0-npm-packages
  • 4.4.3-npm-packages
  • 4.4.2-npm-packages
  • 4.4.0-npm-packages
  • 4.3.5-npm-packages
  • 4.4.1-npm-packages
  • 4.3.4-npm-packages
  • 4.3.3-npm-packages
  • 4.3.2-npm-packages
  • 4.3.1-npm-packages
  • 4.3.0-npm-packages
  • 4.2.5-npm-packages
  • 4.2.4-npm-packages
  • 4.2.3-npm-packages
  • 4.2.2-npm-packages
  • 4.2.1-npm-packages
  • 4.2.0-npm-packages
  • 4.1.5-npm-packages
  • 4.1.3-npm-packages
  • 4.1.2-npm-packages
  • 4.1.4-npm-packages
  • 4.1.1-npm-packages
  • 4.1.0-npm-packages
  • 4.0.8-npm-packages
  • 4.0.7-npm-packages
  • 4.0.9-npm-packages
  • 4.0.3-npm-packages
  • 4.0.2-npm-packages
  • 4.0.4-npm-packages
  • 4.0.5-npm-packages
  • 4.0.6-npm-packages
  • 4.0.1-npm-packages
  • 4.0.0-npm-packages

Description

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.

References

  • Codex
  • Claude Code
  • VS Code
  • GitHub Copilot
  • Cursor
  • Cline
  • Windsurf
  • Google Anti-gravity
  • OpenCode
  • Pi
  • Gemini CLI
  • Hermes Agent
  • Zed
  • Junie
  • Qwen Code
  • Kiro
  • Kilo Code
  • Factory Droid

Set up GitHits for your agents

Run this command:

<> bash
npx githits@latest init

What happens next:

  1. Opens your browser to authorize GitHits
  2. Asks whether to set up GitHits at the user or project level
  3. Detects your supported AI coding tools
  4. Lets you choose which tools to configure
  5. Configures the selected tools