From 0ecd17573a70b8dd7a7fc1a3f7a6e15f50e53e1d Mon Sep 17 00:00:00 2001 From: Corey Butler <770982+coreybutler@users.noreply.github.com> Date: Wed, 28 Oct 2026 22:00:53 -0500 Subject: [PATCH] docs: lifecycle scripts inherit Governance node flags npm/npx/pnpm get permission/V8 flags through npm_config_node_options when policy is on. Default off does not write that env var. Signed-off-by: Corey Butler <770982+coreybutler@users.noreply.github.com> --- docs/cfg/core.md | 2 +- docs/cfg/enterprise/registry.md | 6 +++--- docs/command/package-manager-shims.md | 5 +++-- docs/guide/builds/index.md | 6 +++--- docs/guide/security.md | 8 ++++---- .../ru/docusaurus-plugin-content-docs/current/cfg/core.md | 2 +- .../current/cfg/enterprise/registry.md | 6 +++--- .../current/command/package-manager-shims.md | 5 +++-- .../current/guide/builds/index.md | 6 +++--- .../current/guide/security.md | 8 ++++---- 10 files changed, 28 insertions(+), 26 deletions(-) diff --git a/docs/cfg/core.md b/docs/cfg/core.md index 2de9c3c..9503f79 100644 --- a/docs/cfg/core.md +++ b/docs/cfg/core.md @@ -117,7 +117,7 @@ _(not listed in `cfg docs`)_ | Version aliases (`stable=24.x`, etc.) | Prefer [`nvm alias`](../command/nvm/alias); values are stored as `aliases` | | Turn version management on/off | [`nvm on`](../command/nvm/on)/[`nvm off`](../command/nvm/off) (writes `enabled`) | | Active/last version | Managed by [`nvm use`](../command/nvm/use) (`active_version`, `last_version`) | -| Shim security/V8 flags _(Governance)_ | [Registry reference](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`) | +| Shim security/V8 flags _(Governance)_ | [Registry reference](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`). Off by default: no `npm_config_node_options` write. When on, npm/npx/pnpm lifecycle scripts inherit the same flags. | | Governance locks (mirrors, version allow/block lists, proxies) | [Administrative Templates](ad) and [registry policies](registry) — Certified Builds | ```powershell diff --git a/docs/cfg/enterprise/registry.md b/docs/cfg/enterprise/registry.md index b5ca171..eb97cf4 100644 --- a/docs/cfg/enterprise/registry.md +++ b/docs/cfg/enterprise/registry.md @@ -45,11 +45,11 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/ |**Cache downloads**|`CacheDownloads`|**Overridable** (`cache_downloads`). Cache downloaded Node.js versions for offline reuse.

- `0` = off/false
- `1` = on/true

Default: `0`

`REG_DWORD`| |**Default detect file**|`DefaultDetectFile`|**Overridable** (`default_detect_file`). File written when pinning a version (`nvm pin`) (shim-only).

Default: `.nvmrc`

`REG_SZ`| |**Disable announcements**|`DisableAnnouncements`|**Overridable** (`disable_announcements`). Suppress project and release announcements.

- `0` = shown
- `1` = hidden

Default: `0`

`REG_DWORD`| -|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Shim prepends `--disallow-code-generation-from-strings`, blocking `eval()` and `new Function()` (shim-only). Does not affect `node:vm`.

- `0` = off
- `1` = on

Default: `0`

`REG_DWORD`| +|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Node shim prepends `--disallow-code-generation-from-strings`, blocking `eval()` and `new Function()` (shim-only). When `1`, the package-manager proxy also merges this flag into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Does not affect `node:vm`.

- `0` = off (no env write)
- `1` = on

Default: `0`

`REG_DWORD`| |**Disable NVM upgrades**|`DisableUpgrade`|**Overridable.** Block in-app NVM upgrades (does not block AD/GPO package deployment).

- `0` = allowed
- `1` = blocked

Default: `0`

`REG_DWORD`| |**Disable version management**|`Enabled`|**Overridable** (`nvm on`/`nvm off`). Forces version management on or off. When off, NVM does not manage or redirect Node.js commands.

- `0` = off (`nvm off`)
- `1` = on

Default: `1`

`REG_DWORD`| -|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Shim prepends Node permission-model flag on every `node.exe` launch (shim-only). Default-deny FS/network unless the process passes `--allow-*` at runtime. NVM does not inject `--allow-*` grants. NVM never injects `--permission-audit` (Node 25.8+ report-only). There is no policy that forces `--permission-audit`.

- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: no flag (unsupported)

- HKLM Policies `1`: strip caller `--permission-audit` and inject `--permission` / `--experimental-permission`. Filter `--allow-*` even if the caller already passed `--permission`.
- Preference-only `1`: caller `--permission-audit` is a debug exception (no inject).

- `0` = off
- `1` = on

Default: `0`

`REG_DWORD`| -|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Shim prepends `--frozen-intrinsics` so built-in prototypes cannot be patched (shim-only; Node.js 12+). Adds measurable startup cost.

- `0` = off
- `1` = on

Default: `0`

`REG_DWORD`| +|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Node shim prepends Node permission-model flag on `node` launches (shim-only). When `1`, the package-manager proxy also merges the same flag and `DefaultPermissionGrants` into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. npm-cli.js itself is not launched under `--permission`. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Default-deny FS/network unless the process passes `--allow-*` at runtime. NVM does not inject `--allow-*` grants except `DefaultPermissionGrants`. NVM never injects `--permission-audit` (Node 25.8+ report-only). There is no policy that forces `--permission-audit`.

- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: no flag (unsupported)

- HKLM Policies `1`: strip caller `--permission-audit` (and `--permission-audit` already in `npm_config_node_options`) and inject `--permission` / `--experimental-permission`. Filter `--allow-*` even if the caller already passed `--permission`.
- Preference-only `1`: caller `--permission-audit` is a debug exception for `node` (no inject). Proxy still merges `--permission` into `npm_config_node_options` without stripping existing tokens.

- `0` = off (no env write)
- `1` = on

Default: `0`

`REG_DWORD`| +|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Node shim prepends `--frozen-intrinsics` so built-in prototypes cannot be patched (shim-only; Node.js 12+). When `1`, the package-manager proxy also merges this flag into `npm_config_node_options` for npm/npx/pnpm lifecycle scripts. Yarn, bun, corepack, and vlt are not covered. Does not set `NODE_OPTIONS`. Adds measurable startup cost.

- `0` = off (no env write)
- `1` = on

Default: `0`

`REG_DWORD`| |**Install root**|`InstallRoot`|**Overridable** (`root`). Directory where Node.js versions are stored. Overrides machine and user preferences.

Default: `%LOCALAPPDATA%\Author Software\nvm\installs`

`REG_SZ`| |**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Alternate local directory for Node.js archives (air-gapped mirrors). Overrides cache.

`REG_SZ`| |**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Restrict installs to `LocalInstallDir` only.

- `0` = off
- `1` = on

Default: `0`

`REG_DWORD`| diff --git a/docs/command/package-manager-shims.md b/docs/command/package-manager-shims.md index 71c103c..ac5b190 100644 --- a/docs/command/package-manager-shims.md +++ b/docs/command/package-manager-shims.md @@ -22,8 +22,9 @@ Global CLIs installed with those managers (for example `tsc`) use the same `prox 5. Check the version directory is safe (not a reparse point, not cross-user writable) — failure → **NVM4305**. 6. Locate the delegated command under the Node install (`.exe`, then `.cmd`, then `.bat`). 7. Enforce package-manager constraints when policy applies (npm / npx / pnpm / yarn). HKLM `BlockPackageManagerLifecycleScripts` forces `--ignore-scripts` or `YARN_ENABLE_SCRIPTS=false`. Certified Builds with Advanced Logging write **NVM4412** for install-class commands only. -8. Verify trust of `node.exe` and the delegated target (below). -9. Spawn the real tool (for npm/npx/corepack: often `node.exe` + `*-cli.js`; otherwise the `.exe` / `.cmd`). +8. When `EnforcePermissionModel`, `FreezeV8GlobalObjects`, or `DisableEvalAndStringExecution` is on, merge those Node flags into `npm_config_node_options` for npm/npx/pnpm so lifecycle scripts inherit them. Default off: no env write. Does not set `NODE_OPTIONS`. Yarn, bun, corepack, and vlt are skipped. npm-cli.js itself is not launched under `--permission`. +9. Verify trust of `node.exe` and the delegated target (below). +10. Spawn the real tool (for npm/npx/corepack: often `node.exe` + `*-cli.js`; otherwise the `.exe` / `.cmd`). Canonical binary: `{DataRoot}/proxy.exe`. Per-command shims: `{DataRoot}/.shim/{name}.exe` (hardlink or copy of `proxy.exe`). diff --git a/docs/guide/builds/index.md b/docs/guide/builds/index.md index 072f4a0..ae0d0da 100644 --- a/docs/guide/builds/index.md +++ b/docs/guide/builds/index.md @@ -71,9 +71,9 @@ The Governance package for certified builds introduce policy management. With th - Utilize corporate proxies (IWA, PAC/WPAD). - Block unapproved Node.js Versions (i.e. EOL, vulnerable, or unstable versions). - Require custom npm/yarn/pnpm cooldown periods. -- Enforce Node.js permission model (`--permission` / `--experimental-permission`) so each `node.exe` starts default-deny; apps must pass `--allow-*` at runtime. -- Freeze V8 intrinsics (`--frozen-intrinsics`) to prevent prototype pollution of built-ins. -- Disallow `eval()` / `new Function()` (`--disallow-code-generation-from-strings`). +- Enforce Node.js permission model (`--permission` / `--experimental-permission`) so shimmed `node` starts default-deny; npm/npx/pnpm lifecycle scripts inherit the same flags via `npm_config_node_options` when the policy is on. Apps must pass `--allow-*` at runtime. +- Freeze V8 intrinsics (`--frozen-intrinsics`) to prevent prototype pollution of built-ins (also applied to npm/npx/pnpm scripts when the policy is on). +- Disallow `eval()` / `new Function()` (`--disallow-code-generation-from-strings`) (also applied to npm/npx/pnpm scripts when the policy is on). - Limit to local installations (airgapping). - Restrict version installations (ex: lts/non-EOL/non-ALPHA) with the version firewall. diff --git a/docs/guide/security.md b/docs/guide/security.md index 31d5690..53e45e7 100644 --- a/docs/guide/security.md +++ b/docs/guide/security.md @@ -181,13 +181,13 @@ Supply-chain risk inside transitive `node_modules` remains largely an upstream r ## 4. Node permission and V8 lockdown (Governance, shim mode) -Most teams never pass Node’s permission model flags. Governance policy can force them on every shimmed launch: +Most teams never pass Node’s permission model flags. Governance policy can force them on shimmed `node` and, when at least one of these keys is on, on npm/npx/pnpm lifecycle scripts. Default off does not write `npm_config_node_options`. Yarn, bun, corepack, and vlt are not covered. NVM does not set `NODE_OPTIONS`. | Policy | Effect | |:-|:-| -| `EnforcePermissionModel` | Prepend `--permission` (Node 23+) or `--experimental-permission` (20–22). Default-deny FS/network until the process passes `--allow-*`. NVM does not inject grants. HKLM Policies strips caller `--permission-audit` (report-only) and still injects `--permission`. Preference-only enforce leaves `--permission-audit` as a debug exception. NVM never injects `--permission-audit`. | -| `FreezeV8GlobalObjects` | Prepend `--frozen-intrinsics` | -| `DisableEvalAndStringExecution` | Prepend `--disallow-code-generation-from-strings` (blocks `eval` / `new Function`; does not cover `node:vm`) | +| `EnforcePermissionModel` | Prepend `--permission` (Node 23+) or `--experimental-permission` (20–22) on `node`. Default-deny FS/network until the process passes `--allow-*`. NVM does not inject grants except `DefaultPermissionGrants`. HKLM Policies strips caller `--permission-audit` (report-only) and still injects `--permission`. Preference-only enforce leaves `--permission-audit` as a debug exception on `node`. Proxy merges the same flags into `npm_config_node_options` for npm/npx/pnpm; HKLM also strips `--permission-audit` from that variable. NVM never injects `--permission-audit`. | +| `FreezeV8GlobalObjects` | Prepend `--frozen-intrinsics` on `node`; same flag in `npm_config_node_options` for npm/npx/pnpm when on | +| `DisableEvalAndStringExecution` | Prepend `--disallow-code-generation-from-strings` (blocks `eval` / `new Function`; does not cover `node:vm`). Same flag in `npm_config_node_options` for npm/npx/pnpm when on | See [Operating Modes](../features/modes) and [registry keys](../cfg/registry#available-registry-keys). diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md index 99f6c81..a7a8179 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/core.md @@ -112,7 +112,7 @@ _(не перечислены в `cfg docs`)_ | Псевдонимы версий (`stable=24.x` и т. д.) | Предпочтительно [`nvm alias`](../command/nvm/alias); значения хранятся как `aliases` | | Включение/отключение управления версиями | [`nvm on`](../command/nvm/on)/[`nvm off`](../command/nvm/off) (записывает `enabled`) | | Активная/последняя версия | Управляется [`nvm use`](../command/nvm/use) (`active_version`, `last_version`) | -| Безопасность shim / флаги V8 _(Governance)_ | [Справочник реестра](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`) | +| Безопасность shim / флаги V8 _(Governance)_ | [Справочник реестра](registry) (`EnforcePermissionModel`, `FreezeV8GlobalObjects`, `DisableEvalAndStringExecution`). По умолчанию выкл.: `npm_config_node_options` не пишется. При включении lifecycle-скрипты npm/npx/pnpm наследуют те же флаги. | | Блокировки Governance (зеркала, списки разрешённых/заблокированных версий, прокси) | [Административные шаблоны](ad) и [политики реестра](registry) — Certified Builds | ```powershell diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md index 92942f7..2ccf91c 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/cfg/enterprise/registry.md @@ -50,11 +50,11 @@ certified: |**Список разрешённых malware-имён**|`MalwareAllowList`|Только HKLM. Шаблоны, которые снимают попадание OpenSSF. Сравнение по байтам. `*` снимает все попадания OpenSSF и не снимает блок организации.

`REG_MULTI_SZ`| |**Список блокировки malware**|`MalwareBlockList`|Только Certified. Шаблоны HKLM, которые всегда блокируют, или один URL `https://`. Community игнорирует этот список.

`REG_MULTI_SZ`| |**Конфликт доверия malware**|`MalwareTrustConflict`|Только Certified. **Overridable** (`malware_trust_conflict`). `prevent` (по умолчанию) блокирует доверенное или одобренное имя из OpenSSF. `continue` пропускает такое явное доверие. HKLM важнее HKCU.

`REG_SZ`| -|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Shim добавляет `--disallow-code-generation-from-strings`, блокируя `eval()` и `new Function()` (только shim). Не влияет на `node:vm`.

- `0` = выкл.
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| +|**Disallow eval/string code gen**|`DisableEvalAndStringExecution`|**Overridable** (`disable_eval_and_string_execution`). Node shim добавляет `--disallow-code-generation-from-strings`, блокируя `eval()` и `new Function()` (только shim). При `1` proxy также вписывает этот флаг в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся.

- `0` = выкл. (без записи env)
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| |**Disable NVM upgrades**|`DisableUpgrade`|**Overridable.** Блокировать обновления NVM в приложении (не блокирует развёртывание пакетов AD/GPO).

- `0` = разрешено
- `1` = заблокировано

По умолчанию: `0`

`REG_DWORD`| |**Disable version management**|`Enabled`|**Overridable** (`nvm on`/`nvm off`). Принудительно включает или отключает управление версиями. При выкл. NVM не управляет и не перенаправляет команды Node.js.

- `0` = выкл. (`nvm off`)
- `1` = вкл.

По умолчанию: `1`

`REG_DWORD`| -|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Shim добавляет флаг permission model Node при каждом запуске `node.exe` (только shim). Запрет FS/сети по умолчанию, если процесс не передаёт `--allow-*` во время выполнения. NVM не добавляет grants `--allow-*`. NVM никогда не внедряет `--permission-audit` (Node 25.8+, только отчёт). Политики не форсируют `--permission-audit`.

- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: без флага (не поддерживается)

- HKLM Policies `1`: удаляет `--permission-audit` у вызывающего и внедряет `--permission` / `--experimental-permission`. Фильтрует `--allow-*`, даже если вызывающий уже передал `--permission`.
- Только Preferences `1`: `--permission-audit` — отладочное исключение (без внедрения).

- `0` = выкл.
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| -|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Shim добавляет `--frozen-intrinsics`, чтобы встроенные прототипы нельзя было изменять (только shim; Node.js 12+). Увеличивает время запуска.

- `0` = выкл.
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| +|**Enforce permission model**|`EnforcePermissionModel`|**Overridable** (`enforce_permission_model`). Node shim добавляет флаг permission model Node при запуске `node` (только shim). При `1` proxy также вписывает тот же флаг и `DefaultPermissionGrants` в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. npm-cli.js сам не запускается под `--permission`. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся. Запрет FS/сети по умолчанию, если процесс не передаёт `--allow-*` во время выполнения. NVM не добавляет grants `--allow-*`, кроме `DefaultPermissionGrants`. NVM никогда не внедряет `--permission-audit` (Node 25.8+, только отчёт). Политики не форсируют `--permission-audit`.

- Node 23+: `--permission`
- Node 20–22: `--experimental-permission`
- Node <20: без флага (не поддерживается)

- HKLM Policies `1`: удаляет `--permission-audit` у вызывающего (и из `npm_config_node_options`) и внедряет `--permission` / `--experimental-permission`. Фильтрует `--allow-*`, даже если вызывающий уже передал `--permission`.
- Только Preferences `1`: `--permission-audit` — отладочное исключение для `node` (без внедрения). Proxy всё равно вписывает `--permission` в `npm_config_node_options` без удаления существующих токенов.

- `0` = выкл. (без записи env)
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| +|**Freeze V8 global objects**|`FreezeV8GlobalObjects`|**Overridable** (`freeze_v8_global_objects`). Node shim добавляет `--frozen-intrinsics`, чтобы встроенные прототипы нельзя было изменять (только shim; Node.js 12+). При `1` proxy также вписывает этот флаг в `npm_config_node_options` для lifecycle-скриптов npm/npx/pnpm. Yarn, bun, corepack и vlt не покрыты. `NODE_OPTIONS` не задаётся. Увеличивает время запуска.

- `0` = выкл. (без записи env)
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| |**Install root**|`InstallRoot`|**Overridable** (`root`). Каталог хранения версий Node.js. Переопределяет настройки машины и пользователя.

По умолчанию: `%LOCALAPPDATA%\Author Software\nvm\installs`

`REG_SZ`| |**Local install source**|`LocalInstallDir`|**Overridable** (`local_dir`). Альтернативный локальный каталог архивов Node.js (air-gapped зеркала). Переопределяет кэш.

`REG_SZ`| |**Local install only**|`LocalInstallOnly`|**Overridable** (`local_install_only`). Ограничить установки только `LocalInstallDir`.

- `0` = выкл.
- `1` = вкл.

По умолчанию: `0`

`REG_DWORD`| diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md index 175182d..33c6038 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/command/package-manager-shims.md @@ -22,8 +22,9 @@ Proxy разрешает активную версию Node.js (те же пра 5. Проверяет, что каталог версии безопасен (не reparse point, не writable другими пользователями) — отказ → **NVM4305**. 6. Находит делегированную команду в установке Node (`.exe`, затем `.cmd`, затем `.bat`). 7. Применяет ограничения package manager, если действует политика (npm / npx / pnpm / yarn). HKLM `BlockPackageManagerLifecycleScripts` принудительно ставит `--ignore-scripts` или `YARN_ENABLE_SCRIPTS=false`. Certified Builds с Advanced Logging пишут **NVM4412** только для install-команд. -8. Проверяет доверие к `node.exe` и делегированной цели (ниже). -9. Запускает реальный инструмент (для npm/npx/corepack часто `node.exe` + `*-cli.js`; иначе `.exe` / `.cmd`). +8. Если включены `EnforcePermissionModel`, `FreezeV8GlobalObjects` или `DisableEvalAndStringExecution`, вписывает эти флаги Node в `npm_config_node_options` для npm/npx/pnpm, чтобы lifecycle-скрипты их наследовали. По умолчанию выкл.: env не пишется. `NODE_OPTIONS` не задаётся. Yarn, bun, corepack и vlt пропускаются. npm-cli.js сам не запускается под `--permission`. +9. Проверяет доверие к `node.exe` и делегированной цели (ниже). +10. Запускает реальный инструмент (для npm/npx/corepack часто `node.exe` + `*-cli.js`; иначе `.exe` / `.cmd`). Канонический бинарник: `{DataRoot}/proxy.exe`. Shim на команду: `{DataRoot}/.shim/{name}.exe` (hardlink или копия `proxy.exe`). diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md b/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md index cee7adc..190fea2 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guide/builds/index.md @@ -66,9 +66,9 @@ NVM for Windows распространяется компанией Author Softw - Использовать корпоративные прокси (IWA, PAC/WPAD). - Блокировать неутверждённые версии Node.js (EOL, уязвимые или нестабильные). - Задавать пользовательские cooldown для npm/yarn/pnpm. -- Применять модель прав Node.js (`--permission` / `--experimental-permission`), чтобы каждый `node.exe` стартовал с default-deny; приложениям нужно передавать `--allow-*` при запуске. -- Замораживать intrinsics V8 (`--frozen-intrinsics`), чтобы предотвратить загрязнение прототипов встроенных объектов. -- Запрещать `eval()` / `new Function()` (`--disallow-code-generation-from-strings`). +- Применять модель прав Node.js (`--permission` / `--experimental-permission`), чтобы shim-`node` стартовал с default-deny; lifecycle-скрипты npm/npx/pnpm наследуют те же флаги через `npm_config_node_options`, когда политика включена. Приложениям нужно передавать `--allow-*` при запуске. +- Замораживать intrinsics V8 (`--frozen-intrinsics`), чтобы предотвратить загрязнение прототипов встроенных объектов (также для скриптов npm/npx/pnpm при включённой политике). +- Запрещать `eval()` / `new Function()` (`--disallow-code-generation-from-strings`) (также для скриптов npm/npx/pnpm при включённой политике). - Ограничивать установки локальными источниками (air-gapping). - Ограничивать устанавливаемые версии (например lts/non-EOL/non-ALPHA) через version firewall. diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md b/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md index 886bd95..5a7ed95 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guide/security.md @@ -124,13 +124,13 @@ NVM **сейчас не** применяет allow/deny list **пакетов** ## 4. Permission model и V8 lockdown Node (Governance, shim) \{#node-permission-and-v8-lockdown-governance-shim-mode} -Большинство команд не передают флаги permission model 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). Default-deny FS/network, пока процесс не передаст `--allow-*`. NVM не внедряет grants. HKLM Policies удаляет `--permission-audit` (только отчёт) и всё равно внедряет `--permission`. Enforce только из Preferences оставляет `--permission-audit` как отладочное исключение. NVM никогда не внедряет `--permission-audit`. | -| `FreezeV8GlobalObjects` | Добавляет `--frozen-intrinsics` | -| `DisableEvalAndStringExecution` | Добавляет `--disallow-code-generation-from-strings` (блокирует `eval` / `new Function`; не покрывает `node:vm`) | +| `EnforcePermissionModel` | Добавляет `--permission` (Node 23+) или `--experimental-permission` (20–22) на `node`. Default-deny FS/network, пока процесс не передаст `--allow-*`. NVM не внедряет grants, кроме `DefaultPermissionGrants`. HKLM Policies удаляет `--permission-audit` (только отчёт) и всё равно внедряет `--permission`. Enforce только из Preferences оставляет `--permission-audit` как отладочное исключение для `node`. Proxy вписывает те же флаги в `npm_config_node_options` для npm/npx/pnpm; HKLM также удаляет `--permission-audit` из этой переменной. 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](../features/modes) и [ключи реестра](../cfg/registry#available-registry-keys).