CVE-2026-118905
nvm_ls lets an untrusted version string inject sed commands, executing arbitrary commands with GNU sed
Что произошло
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.
Что это значит
Недоверенные данные могут попасть в команду операционной системы. Оцените доступность уязвимого интерфейса и права сервиса.
Что делать
1. Проверьте, затронуты ли вы
Соберите инвентаризацию и сравните с таблицей затронутых версий. Эти команды только показывают установленные компоненты и сами по себе не доказывают наличие CVE.
dpkg-query -W -f='${Package} ${Version}\n'rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n'Get-HotFix | Select-Object HotFixID, InstalledOn
2. Установите исправление
Upgrade to nvm 0.40.6 or later.
3. Временные меры
Until upgrading, do not pass untrusted version strings to nvm, and use nvm's own `.nvmrc` handling (a bare `nvm use`) instead of reading `.nvmrc` yourself, including in shell auto-switch hooks.
4. Проверьте следы эксплуатации
Проверьте аномальные входы, новые учётные записи, ошибки и необычные дочерние процессы в затронутом сервисе. Публичные проверенные правила обнаружения не включены в запись; отсутствие сигналов не доказывает отсутствие компрометации.
5. После исправления
- Проверьте фактическую версию и результат установки по бюллетеню.
- При необходимости перезапустите сервисы в согласованное окно.
- Повторите проверку сканером и функциональные проверки.
- Зафиксируйте результат, дату, владельца и оставшийся риск.
Продукты и затронутые версии
nvm-sh / nvm
{
"status": "affected",
"version": "0.31.2",
"lessThan": "0.40.6",
"versionType": "semver"
}CVSS: оценки и векторы
CVSS 4.0 · cve7.1
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1 · cve7
CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
CVSS 4.0 · 7ffcee3d-2c14-4c3e-b844-86c6a321a1587.1
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1 · 7ffcee3d-2c14-4c3e-b844-86c6a321a1587
CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
Источники и ссылки
Происхождение полей
{
"cwes": [
"cve",
"nvd"
],
"epss": {
"source": "epss",
"received_at": "2026-10-30T13:59:35.249099+00:00"
},
"title": {
"source": "cve",
"received_at": "2026-10-29T05:30:43.959452+00:00"
},
"scores": [
"cve",
"nvd"
],
"status": {
"source": "cve",
"received_at": "2026-10-29T05:30:43.959452+00:00"
},
"affected": [
"cve"
],
"published": {
"source": "cve",
"received_at": "2026-10-29T05:30:43.959452+00:00"
},
"solutions": [
"cve"
],
"percentile": {
"source": "epss",
"received_at": "2026-10-30T13:59:35.249099+00:00"
},
"references": [
"cve",
"nvd"
],
"description": {
"source": "cve",
"received_at": "2026-10-29T05:30:43.959452+00:00"
},
"workarounds": [
"cve"
],
"configurations": []
}Хронология записи
- Данные обновлены30.10.2026, 17:00
- Данные обновлены29.10.2026, 09:33
- Появились сведения об исправлении29.10.2026, 08:30
Личная заметка и статус
Другие CVE того же продукта
| УЯЗВИМОСТЬ / ПРОДУКТ | ПРИОРИТЕТ | CVSS | EPSS | СИГНАЛЫ | ОПУБЛИКОВАНА | Карточка |
|---|---|---|---|---|---|---|
| CVE-2026-94185 nvm alias resolution follows `..` and discloses files outside $NVM_DIR/alias nvm-sh / nvm | Средний | 6.7 | 0,22 % | 21.09.2026 | ||
| CVE-2026-15921 nvm path traversal via a malicious mirror's LTS codename writes outside the alias directory nvm-sh / nvm | Средний | 2.1 | 0,26 % | PoCПатч | 16.07.2026 | |
| CVE-2026-10796 nvm executes commands from a malicious Node.js mirror's version strings nvm-sh / nvm | Критический | 7.5 | 5 % | PoCПатч | 04.06.2026 | |
| CVE-2026-1665 Command Injection in nvm via NVM_AUTH_HEADER in wget code path nvm-sh / nvm | Средний | 5.4 | 0,78 % | Патч | 30.01.2026 |