Перейти к основному содержимому

NVM Firewall

NVM Firewall применяет ваши списки allow, deny и trust.

Это не Malicious Package Blocker. Тот blocker использует публичную ленту OpenSSF известных вредоносных имён.

Это не Author Mirror. Зеркало Author — хост загрузок. Списки версий могут заполнять этот хост.

Проверки модулей и доверия работают в режиме shim. Режим link и менеджер пакетов без прокси эти проверки пропускают.

Malicious Package Blocker может также остановить тот же npm install. См. Malicious Package Blocker.

Состав​

ЧастьСборкаКлючиЭффект
VersionCertified BuildsVersionAllowList / VersionBlockListБлокирует nvm install запрещённой версии Node.js.
ModuleCertified BuildsApprovedModules / ApprovedGlobalModulesБлокирует установку npm/pnpm/yarn/npx запрещённого пакета.
TrustCommunity Builds + Certified BuildsTrustedModules, UntrustedModuleHandlerActionReshim или prompt, когда global CLI сам обновляется.

Команды​

nvm firewall trust module <entry>... # both editions (HKCU; --machine for HKLM). Re-signs launchers; nvm reshim is not required.
nvm firewall trust module list|ls [--json] # effective TrustedModules (HKLM overrides HKCU)
nvm firewall distrust module <entry>...
nvm firewall distrust module list|ls [--json] # same TrustedModules list as trust module list
nvm firewall allow version <entry>... # Certified Builds
nvm firewall deny version <entry>... # Certified Builds (stored as NOT <entry>)
nvm firewall allow module [--global] <entry>...
nvm firewall deny module [--global] <entry>...

trust module / distrust module по умолчанию пишут пользовательские prefs. --machine требует повышения прав. Certified allow/deny всегда требуют повышения прав.

Блокировка неодобренных установок Node.js​

Certified Builds могут отклонять nvm install для версии Node.js, которой нет в allow-списке или которая попадает под deny-правило. Клиент проверяет VersionAllowList / VersionBlockList до начала загрузки. Локальная проверка работает без сети.

Статические записи — точный semver, маски (например 20.x) и отрицание NOT / !. Псевдонимы жизненного цикла вроде EOL на клиенте не раскрываются — Author Mirror применяет их при выдаче архива.

nvm firewall allow version 20.x 22.x
nvm firewall deny version 18.x

Команды пишут политику машины и требуют повышения прав. См. ключи реестра Governance.

Блокировка неодобренных запусков Node.js​

Те же списки версий ограничивают и использование Node.js на Certified Builds. nvm use и Certified-shim node отклоняют версию, запрещённую политикой (NVM4411). Версия уже на диске список не обходит.

nvm firewall allow version 22.x
nvm firewall deny version 16.x
node -v # fails when the active version is denied

Блокировка неодобренных установок зависимостей​

Certified Builds могут разрешать или запрещать установку пакетов в проект (npm install, аналоги pnpm / yarn и другие proxied-команды). Без настроенных правил модулей разрешены все пакеты.

nvm firewall allow module eslint left-pad
nvm firewall deny module evil-package

На Certified Builds требуется повышение прав. Сырые имена ключей политики — в Справочнике политики реестра.

Голая установка (npm install без имён пакетов)​

Для расширяемых команд установки (npm install, pnpm install, yarn и аналоги) без имён пакетов в командной строке NVM берёт модули из ближайшего манифеста проекта и применяет локальные правила allow/deny к этому набору:

  1. По умолчанию: если для активного менеджера пакетов есть lockfile, используются пакеты из lockfile.
  2. Иначе: используются зависимости из package.json.

Чтобы всегда брать только package.json (игнорировать lockfile), включите в политике Skip lockfile for module firewall — см. ключи Governance.

Блокировка неодобренных глобальных модулей​

Глобальные установки (npm install -g и аналоги) используют отдельный список одобрения, не проектный. Передайте --global, чтобы правило писалось в этот список.

nvm firewall allow module --global typescript
nvm firewall deny module --global unwanted-cli

Без настроенных глобальных правил разрешены все глобальные пакеты. Сырые имена ключей политики — в Справочнике политики реестра.

Блокировка недоверенных изменений глобальных модулей​

Глобальные CLI часто обновляют себя на месте. Когда launcher на диске изменился и модуль не доверен, NVM for Windows может:

  • prompt (по умолчанию) — спросить в консоли, если терминал на переднем плане; иначе native-уведомление с Trust / Cancel
  • allow — auto-reshim с тихим уведомлением
  • deny — без prompt и без reshim

Истекшее уведомление оставляет тихое follow-up в Центре уведомлений.

По умолчанию доверенны только bundled package managers (npm, npx, yarn, yarnpkg, corepack, pnpm и vlt). Доверие к модулю переподписывает его launchers; отдельный nvm reshim не нужен. Один nvm reshim не сохраняет доверие после следующего self-update. Каждое изменение недоверенного модуля аудируется как NVM4406 (info).

Защита есть в Community Builds и enforceable на Certified Builds.

nvm firewall trust module opencode
nvm firewall distrust module opencode
nvm config set untrusted_module_handler_action=prompt
nvm config set untrusted_module_handler_action=allow
nvm config set untrusted_module_handler_action=deny

--machine пишет в HKLM вместо пользовательского hive prefs.

Значения по умолчанию​

ПоведениеПо умолчанию
Доверенные модули (пустой trust-список)Только bundled package managers (npm, npx, yarn, yarnpkg, corepack, pnpm, vlt)
Списки allow для project / global (пустые)Разрешить все пакеты
Действие при недоверенном модулеprompt — см. пример выше
Lockfile при голой установкеПредпочитать lockfile, если есть — см. Голая установка

Сырые имена реестра и prefs — в Справочнике политики реестра.

Ограничения​

Human-readable firewall list output shows at most 20 entries, then and N more when additional rules exist (--json is uncapped).