High severity · published Oct 29, 2026
CVE-2026-118905
nvm_ls lets an untrusted version string inject sed commands, executing arbitrary commands with GNU sed
New
7.0
CVSS
–
EPSS
No
On KEV
Description
Node Version Manager (nvm) is a POSIX-compliant shell function for managing multiple node.js versions. In versions 0.31.2 through 0.40.5, `nvm_ls` filters installed versions with a sed program that embeds the requested version pattern in a `\#...#` address, escaping `.` (and, since 0.40.4, `#`) but not backslash. A version string containing `#` (or `\#`) therefore closes the address early, and the rest of it is parsed as sed commands: with GNU sed, the `e` command runs a shell command as the user; with BSD sed, the `w` and `r` commands write and read files. This is reachable whenever an attacker-influenced version string is passed to `nvm use`, `nvm which`, `nvm ls`, `nvm version`, `nvm run`, or `nvm exec`, or to `nvm-exec` via `NODE_VERSION`, and at least one version is installed. nvm's own `.nvmrc` parser strips comments, so a bare `nvm use` is not affected; however, the bash `cdnvm` and zsh `load-nvmrc` auto-switch hooks documented in the README read `.nvmrc` as-is and pass it to `nvm ls` and `nvm version`, so a user with one of those hooks installed runs the attacker's command just by changing into a directory under a malicious `.nvmrc`; scripts that run `nvm use "$(cat .nvmrc)"` are affected the same way. Version 0.40.6 passes any version pattern containing `#` or a newline through the `.nvmrc` content parser first, so no `#` reaches the sed program.
CVSS vector
CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
Attack vector
Local
Complexity
High
Privileges
None
User interaction
Required
Confidentiality
High
Integrity
High
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
NV
nvm · nvm-sh
0.31.2 before 0.40.6 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-118905
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-118905
vendor-advisory
https://github.com/nvm-sh/nvm/security/advisories/GHSA-vgqf-vc3m-4wv3
patch
https://github.com/nvm-sh/nvm/commit/82315e2b189528a006da6701eac30e8c364ffd22
patch
https://github.com/nvm-sh/nvm/pull/3854
release-notes
https://github.com/nvm-sh/nvm/releases/tag/v0.40.6
More from nvm
7.5
CVE-2026-10796
nvm executes commands from a malicious Node.js mirror's version strings
5.5
CVE-2026-94185
nvm alias resolution follows `..` and discloses files outside $NVM_DIR/alias
5.4
CVE-2026-1665
Command Injection in nvm via NVM_AUTH_HEADER in wget code path
3.1
CVE-2026-15921
nvm path traversal via a malicious mirror's LTS codename writes outside the alias directory
