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

Понимание безопасности

NVM for Windows v2 считает Node.js недоверенной загрузкой, пока не пройдут проверки целостности, затем в режиме shim снова проверяет бинарник при каждом запуске. Certified и Governance-редакции добавляют машинные политики, version firewall и (опционально) зеркало загрузок Author.

На этой странице — что проверяется, когда и какая редакция владеет контролем. Подробности — в связанных документах.

Модель безопасности кратко​

Ключи по редакциям

КонтрольCommunityCertifiedGovernance add-on
Archive SHASUM + Authenticode node.exe✓✓✓
Allowed publisher org / thumbprint pins✓✓✓
Ужесточение DACL каталога версии✓✓✓
Shim verify-cache + доверие на каждый запускshim modeshim modeshim mode
Переопределение политикой HKLM (ADMX)——✓ (+ ADMX-пакет)
Version allow/block firewall——✓
Cooldown пакетных менеджеров——✓
Принудительный --permission / V8 lockdown——✓
Author mirror + hosted rules——✓

Функции безопасности shim-режима не работают в link mode. Для управляемых парков предпочтителен shim.

1. Проверки при установке​

Когда nvm install (или auto-install) получает сборку Node.js:

  1. Version firewall (Governance) — VersionAllowList / VersionBlockList в hive Policies могут отказать версии до загрузки, при nvm use и при запуске shim. Без Governance эти списки игнорируются. См. Version Firewall + Author Mirror.
  2. Целостность архива — .7z (или staged-архив) сверяется с опубликованным SHASUMS256 для версии/архитектуры.
  3. Authenticode для node.exe — после распаковки выполняется проверка доверия Windows. Одной валидной подписи мало: организация подписанта должна быть в allow list.
  4. Доверенные организации по умолчанию — всегда доверяются OpenJS Foundation, Node.js Foundation и Author Software Inc.. Других (например NodeSource) добавляйте через AllowedSigners. Опционально AllowedThumbprints закрепляют конкретные leaf-сертификаты.
  5. Ужесточение DACL — каталог установки версии блокируется так, чтобы другие учётные записи не могли переписать node.exe (или подменить троян в этом дереве). Скомпрометированная учётная запись, уже владеющая профилем, всё ещё может атаковать свои файлы; контроль нацелен на cross-account и удалённую запись.
  6. Seed verify-cache — пишется подписанная запись кэша, чтобы последующие запуски shim обходили полный Authenticode на горячем пути.

Поведение revocation настраивается (AuthenticodeRevocation; air-gapped установки предпочитают cached-проверки). См. справочник политик реестра.

2. Проверки во время выполнения (shims)​

Основные runtime-shim v2:

БинарникРоль
.shim\node.exeРазрешает версию, проверяет доверие, применяет опциональные security-флаги, запускает настоящий Node
utils\proxy.exeТот же путь доверия для npm / npx / yarn / pnpm и CLI глобальных модулей

(reshim.exe — вспомогательный, не повседневный command shim.)

При каждом запуске shim:

  1. Определяет, какую версию Node.js запускать (разрешение версии).
  2. Self-check, если вызван из data-root .shim — byte-compare с каноническим payload Program Files / установки (целостность самого shim, не второй круг Authenticode).
  3. Доверяет node.exe — предпочитает hit verify-cache (~1–2 ms). При miss или инвалидации кэша — полный Authenticode по allowed signers, затем сверка PE FileVersion с версией папки. Отказ Authenticode — NVM4301. Несовпадение FileVersion (например Node 10 в папке v24.0.0) — NVM4314. Отказ version firewall на Certified — NVM4411.
  4. Опционально добавляет Governance security-флаги (ниже), затем CreateProcessW настоящего Node.js.

Подробности: node (shim), Package Manager Shims.

3. Пакетные менеджеры и модули​

Через proxy.exe NVM может применять Governance-контроли пакетных менеджеров, например NpmModuleMinimumAge (cooldown / минимальный возраст публикации для npm, npx, pnpm, yarn, vlt и bun/bunx при shim_bun). Community по умолчанию выключен (0) — как stock npm/npx без version manager. Certified Builds по умолчанию 2 дня (2880 минут), если ключ не задан, включая npx, vlt и shimmed bun. HKLM Policies фиксирует значение и удаляет CLI-флаги обхода возраста.

NVM сейчас не применяет allow/deny list пакетов npm для вложенных зависимостей. Supply-chain риск внутри node_modules остаётся проблемой upstream-реестра; более долгосрочная работа Author Software Runtime закрывает это отдельно. Что NVM действительно ограничивает сегодня:

  • Версии Node.js — локальный firewall + опциональные правила Author mirror (author-mirror)
  • Доверие к издателю node.exe на каждый запуск
  • Cooldown при установках пакетных менеджеров (Governance)
  • Allow-list пакетов (Governance module firewall) и доверие self-update (trust firewall) — см. Firewall

4. Permission model и V8 lockdown Node (Governance, shim)​

Большинство команд не передают флаги permission model Node. Политика Governance может принудительно включать их на shim-node и, если хотя бы один ключ включён, на lifecycle-скрипты npm/npx/pnpm. По умолчанию выкл.: npm_config_node_options не пишется. Yarn, bun, corepack и vlt не покрыты. NVM не задаёт NODE_OPTIONS.

ПолитикаЭффект
EnforcePermissionModelДобавляет --permission (Node 23+) или --experimental-permission (20–22) на node. Default-deny FS/network, пока процесс не передаст --allow-*. NVM не внедряет grants, кроме DefaultPermissionGrants. HKLM Policies удаляет --permission-audit (только отчёт) из argv, NODE_OPTIONS и npm_config_node_options, затем всё равно внедряет --permission. Enforce только из Preferences оставляет --permission-audit как отладочное исключение для node. Proxy вписывает те же флаги в npm_config_node_options для npm/npx/pnpm. NVM никогда не внедряет --permission-audit.
FreezeV8GlobalObjectsДобавляет --frozen-intrinsics на node; тот же флаг в npm_config_node_options для npm/npx/pnpm при включении
DisableEvalAndStringExecutionДобавляет --disallow-code-generation-from-strings (блокирует eval / new Function; не покрывает node:vm). Тот же флаг в npm_config_node_options для npm/npx/pnpm при включении

См. Operating Modes и ключи реестра.

5. Реестр и enterprise-политики​

Настройки живут в реестре Windows. В общих чертах:

  • Пользовательские предпочтения (HKCU) — то, что интерактивный пользователь может менять без прав администратора.
  • Машинные предпочтения (HKLM Preferences) — то, что администраторы пишут в hive Preferences. Доступны без Governance.
  • Машинная политика (HKLM Policies) — то, что GPO/MDM пишут в Software\Policies. Учитывается только с лицензией Governance (AllowsMachinePolicy).

Пакет Governance поставляет шаблоны ADMX/ADML для Active Directory и конфигурации в стиле Entra/Intune. Разные GPO могут задавать разный уровень риска (например блокировать EOL Node для большинства, разрешить одну legacy-версию команде миграции). См. Administrative Templates и справочник политик реестра.

6. Зеркало загрузок Author (Governance)​

Организации могут запретить публичный nodejs.org/dist на сетевом периметре и allow-list mirror.author.io. Тогда NVM качает через policy-aware зеркало Author. Контроли сочетают:

  • Списки клиента/GPO (VersionAllowList / VersionBlockList) для точных версий и диапазонов — lifecycle-алиасы вроде EOL / ALPHA / MAINTENANCE на клиенте игнорируются и применяются только Author Mirror при скачивании
  • Hosted rules в клиентском портале (IP, geo, domain/tenant, SID, license group)

Подробности: Version Firewall + Author Mirror. Domain/tenant ID: Как найти AD Domain ID или Entra Tenant ID.

7. Аудит и нативные интеграции​

Критические события установки, конфигурации и безопасности пишутся в Windows Event Viewer на Community и Certified. Опциональный Advanced Logging (Certified add-on) рассчитан на структурированные коды для SIEM. Логирование каждого вызова доступно через LogExecutions в shim-режиме.

См. Event Logging. Более широкий контекст продукта (включая native integrations): Why we rewrote NVM for Windows (внешний).

ТемаДокумент
Поведение shimnode (shim)
Shim npm / yarn / pnpmPackage Manager Shims
Shim vs linkOperating Modes
Ключи политикСправочник политик реестра
Version firewall / mirrorAuthor Mirror
РедакцииВыбор edition
Коды ошибок (NVM43xx / NVM44xx)Коды ошибок