diff --git a/docs/cfg/core.md b/docs/cfg/core.md index d877f7d..9c42ee7 100644 --- a/docs/cfg/core.md +++ b/docs/cfg/core.md @@ -100,7 +100,7 @@ nvm config set shim_bun=false |--------|---------|--------|-------------| | `log_executions` | `false` | Boolean | Whether to log every Node.js invocation (ex: `node file.js`). (shim-only) | | `disable_announcements` | `false` | Boolean | Whether to disable project and release announcements. On Certified Builds, license expiry warnings still run when a commercial license is present. This does not suppress malware definition or malware block notifications. | -| `skip_malware_checks` | `false` | Boolean | Skip malware checks for package-manager and node shims. The definition file still updates. HKLM `SkipMalwareChecks` wins over HKCU. | +| `skip_malware_checks` | `false` | Boolean | Skip malware checks for package-manager and node shims. The definition file still updates. HKLM `SkipMalwareChecks` wins over HKCU. `AirGapped` with no `malware.db` also skips, without this key. | | `notify_malware_definitions` | `true` | Boolean | Certified only. Show a silent notification after malware definitions change. HKLM can force it off. | ```powershell diff --git a/docs/cfg/enterprise/registry.md b/docs/cfg/enterprise/registry.md index b720fd9..4371aa1 100644 --- a/docs/cfg/enterprise/registry.md +++ b/docs/cfg/enterprise/registry.md @@ -26,7 +26,7 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/ |Name|Key|Description| |:-|:-|:-| -|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Skip live JWKS fetch from `licensing.author.io`. Verify `AccessToken` only against the COSE-signed offline JWKS store (`JwksCose` or `nvm-jwks.cose` next to `nvm.exe`). Independent of `LocalInstallOnly`.

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

Default: `0`

`REG_DWORD`| +|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Skip live JWKS fetch from `licensing.author.io`. Verify `AccessToken` only against the COSE-signed offline JWKS store (`JwksCose` or `nvm-jwks.cose` next to `nvm.exe`). Independent of `LocalInstallOnly`. When on and `malware.db` is not on disk, the shim skips malware scans. An invalid `malware.db` still blocks.

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

Default: `0`

`REG_DWORD`| |**Version aliases**|`Aliases`|**Overridable.** Centrally managed aliases (e.g. `stable=24.9.0`). Blocks user-defined aliases when set by policy.

`alias=version` per entry

`REG_MULTI_SZ`| |**Allow cache deletion**|`AllowDownloadCacheDelete`|**Overridable** (`allow_download_cache_removal`). Whether cached downloads may be removed (`nvm cache remove`).

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

Default: `1`

`REG_DWORD`| |**Allow insecure downloads**|`AllowInsecureDownloads`|**Overridable** (`allow_insecure_downloads`). Permit downloads when TLS certificates are expired or invalid.

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

Default: `0`

`REG_DWORD`| @@ -52,7 +52,7 @@ See [Administrative Templates](ad) for GPO and Intune deployment. Download ADMX/ |**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`| |**Audit logging**|`LogExecutions`|**Overridable** (`log_executions`). Log every Node.js invocation to the Windows Event Log (shim-only). Most useful on **Audit+** (structured ETW).

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

Default: `0`

`REG_DWORD`| -|**Skip malware checks**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Skip malware checks for package-manager and node shims. The definition file still updates. HKLM wins over HKCU.

- `0` = check
- `1` = skip

Default: `0`

`REG_DWORD`| +|**Skip malware checks**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Skip malware checks for package-manager and node shims. The definition file still updates. HKLM wins over HKCU. `AirGapped` with no `malware.db` also skips, without this key.

- `0` = check
- `1` = skip

Default: `0`

`REG_DWORD`| |**Wrap bun for malware checks**|`ShimBun`|**Overridable** (`shim_bun`). Wrap `bun` and `bunx` so OpenSSF malware checks run when bun is used as a package manager. NVM for Windows does not install bun and does not switch bun versions. HKLM wins over HKCU.

- `0` = no bun shims
- `1` = create `{DataRoot}/.shim/bun.exe` and `bunx.exe`

Default: `0` Community, `1` Certified Builds

`REG_DWORD`| |**Notify malware definitions**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Certified only. Silent toast after definitions change. HKLM can force it off.

- `0` = hide
- `1` = show

Default: `1`

`REG_DWORD`| |**Malware allow list**|`MalwareAllowList`|HKLM only. Patterns that clear an OpenSSF hit. Byte-for-byte. A `*` clears every OpenSSF hit. Does not clear an organization block. Empty allows nothing.

`REG_MULTI_SZ`| diff --git a/docs/features/author-mirror.md b/docs/features/author-mirror.md index b3241b4..5d845fe 100644 --- a/docs/features/author-mirror.md +++ b/docs/features/author-mirror.md @@ -116,7 +116,7 @@ Organizations whose policies prevent storing any organization data on hosted ser | [`local_dir`](../cfg/registry#available-registry-keys) | `LocalInstallDir` | Directory of pre-staged Node archives (+ checksums). Preferred over network when present. | | [`local_install_only`](../cfg/registry#available-registry-keys) | `LocalInstallOnly` | If on, **never** download; fail when the version is missing locally. | -`AirGapped` is separate: it only forces **offline license JWKS** verification (`licensing.author.io` skipped). It does **not** by itself block Node downloads — use `LocalInstallOnly` (and/or remove remote mirrors) for install air-gaps. See [Local Installations](./local-installations) and [Air-gapped Installations](../guide/air-gapped-installations). +`AirGapped` is separate: it only forces **offline license JWKS** verification (`licensing.author.io` skipped). It does **not** by itself block Node downloads — use `LocalInstallOnly` (and/or remove remote mirrors) for install air-gaps. When `AirGapped` is on and `malware.db` is missing, the shim skips malware scans. See [Local Installations](./local-installations) and [Air-gapped Installations](../guide/air-gapped-installations). ## Related diff --git a/docs/features/cache.md b/docs/features/cache.md index 3a87364..56379f5 100644 --- a/docs/features/cache.md +++ b/docs/features/cache.md @@ -31,7 +31,7 @@ Under the NVM data root (parent of the install root; default `%LOCALAPPDATA%\Aut |-------|------|----------| | Versions | `.cache/versions` | Node.js `.7z` archives (`node-v{version}-win-{x64\|arm64}.7z`) | | Metadata | `.cache/metadata` | Sync/release index metadata (not install archives) | -| Malware scans | `.cache/malware-scan` | One stamp per scanned lockfile. `malware.db` itself lives in the data root, next to this `.cache` directory | +| Malware scans | `.cache/malware-scan` | One stamp per scanned lockfile. `malware.db` itself lives in the data root, next to this `.cache` directory. If `AirGapped` is on and `malware.db` is missing, the shim skips the scan. | | HTTP | `.cache/http` | Short-lived HTTP bodies (for example SHASUM fetches) | If [`local_dir`](../cfg/registry#available-registry-keys) is set (see [registry policy](../cfg/registry)), that directory **replaces** `.cache/versions` as the archive source for installs. diff --git a/docs/guide/air-gapped-installations.md b/docs/guide/air-gapped-installations.md index 7880b9c..f399110 100644 --- a/docs/guide/air-gapped-installations.md +++ b/docs/guide/air-gapped-installations.md @@ -125,4 +125,6 @@ Repeat prefetch on a connected host when new Node releases are approved, update :::tip[Certified Builds] [`air_gapped`](../cfg/registry#available-registry-keys) controls offline license/JWKS behavior for Author mirrors _(Governance)_. It does **not** point Node installs at a local archive folder. Use [`local_dir`](../cfg/registry#available-registry-keys)/[`local_install_only`](../cfg/registry#available-registry-keys) (or the steps above) for that. + +When `AirGapped` is on and `malware.db` is not on disk, the shim skips malware scans. Copy a valid `malware.db` into the NVM data root if you want those checks. An invalid file still blocks. ::: 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 6f3f50b..24c0d90 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 @@ -26,7 +26,7 @@ certified: |Имя|Ключ|Описание| |:-|:-|:-| -|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Пропустить live-загрузку JWKS с `licensing.author.io`. Проверять `AccessToken` только по офлайн-хранилищу JWKS с подписью COSE (`JwksCose` или `nvm-jwks.cose` рядом с `nvm.exe`). Независимо от `LocalInstallOnly`.

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

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

`REG_DWORD`| +|**Air-gapped license verify**|`AirGapped`|**Edition: Distro+.** Пропустить live-загрузку JWKS с `licensing.author.io`. Проверять `AccessToken` только по офлайн-хранилищу JWKS с подписью COSE (`JwksCose` или `nvm-jwks.cose` рядом с `nvm.exe`). Независимо от `LocalInstallOnly`. Если включено и `malware.db` нет на диске, shim пропускает проверки malware. Повреждённый `malware.db` всё равно блокирует.

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

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

`REG_DWORD`| |**Version aliases**|`Aliases`|**Overridable.** Централизованные псевдонимы (например, `stable=24.9.0`). Блокирует пользовательские псевдонимы, если задано политикой.

`alias=version` на запись

`REG_MULTI_SZ`| |**Allow cache deletion**|`AllowDownloadCacheDelete`|**Overridable** (`allow_download_cache_removal`). Можно ли удалять кэшированные загрузки (`nvm cache remove`).

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

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

`REG_DWORD`| |**Allow insecure downloads**|`AllowInsecureDownloads`|**Overridable** (`allow_insecure_downloads`). Разрешить загрузки при просроченных или недействительных TLS-сертификатах.

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

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

`REG_DWORD`| @@ -43,7 +43,7 @@ certified: |**Cache downloads**|`CacheDownloads`|**Overridable** (`cache_downloads`). Кэшировать загруженные версии Node.js для офлайн-использования.

- `0` = выкл./false
- `1` = вкл./true

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

`REG_DWORD`| |**Default detect file**|`DefaultDetectFile`|**Overridable** (`default_detect_file`). Файл, записываемый при закреплении версии (`nvm pin`) (только shim).

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

`REG_SZ`| |**Disable announcements**|`DisableAnnouncements`|**Overridable** (`disable_announcements`). Скрыть объявления проекта и релизов.

- `0` = показывать
- `1` = скрывать

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

`REG_DWORD`| -|**Пропускать проверки malware**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Не проверять пакеты и `node` по списку malware. Файл определений всё равно обновляется. HKLM важнее HKCU.

- `0` = проверять
- `1` = пропустить

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

`REG_DWORD`| +|**Пропускать проверки malware**|`SkipMalwareChecks`|**Overridable** (`skip_malware_checks`). Не проверять пакеты и `node` по списку malware. Файл определений всё равно обновляется. HKLM важнее HKCU. `AirGapped` без `malware.db` тоже пропускает, без этого ключа.

- `0` = проверять
- `1` = пропустить

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

`REG_DWORD`| |**Уведомлять об обновлении определений**|`NotifyMalwareDefinitions`|**Overridable** (`notify_malware_definitions`). Только Certified. Тихое уведомление после смены определений. HKLM может отключить его.

- `0` = скрыть
- `1` = показать

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

`REG_DWORD`| |**Список разрешённых malware-имён**|`MalwareAllowList`|Только HKLM. Шаблоны, которые снимают попадание OpenSSF. Сравнение по байтам. `*` снимает все попадания OpenSSF и не снимает блок организации.

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

`REG_MULTI_SZ`| diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/features/author-mirror.md b/i18n/ru/docusaurus-plugin-content-docs/current/features/author-mirror.md index d540a39..bcc818d 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/features/author-mirror.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/features/author-mirror.md @@ -116,7 +116,7 @@ Hosted rules настраиваются через клиентский порт | [`local_dir`](../cfg/registry#available-registry-keys) | `LocalInstallDir` | Каталог предразмещённых архивов Node (+ checksums). Предпочтительнее сети, если есть. | | [`local_install_only`](../cfg/registry#available-registry-keys) | `LocalInstallOnly` | Если включено, **никогда** не загружать; ошибка при отсутствии версии локально. | -`AirGapped` отдельно: только принудительная **офлайн-проверка license JWKS** (`licensing.author.io` пропускается). Сама по себе **не** блокирует загрузки Node — для air-gap установок используйте `LocalInstallOnly` (и/или уберите удалённые зеркала). См. [Локальные установки](./local-installations) и [Изолированные установки](../guide/air-gapped-installations). +`AirGapped` отдельно: только принудительная **офлайн-проверка license JWKS** (`licensing.author.io` пропускается). Сама по себе **не** блокирует загрузки Node — для air-gap установок используйте `LocalInstallOnly` (и/или уберите удалённые зеркала). Если `AirGapped` включён и `malware.db` нет, shim пропускает проверки malware. См. [Локальные установки](./local-installations) и [Изолированные установки](../guide/air-gapped-installations). ## См. также diff --git a/i18n/ru/docusaurus-plugin-content-docs/current/guide/air-gapped-installations.md b/i18n/ru/docusaurus-plugin-content-docs/current/guide/air-gapped-installations.md index c3636c9..5d5772f 100644 --- a/i18n/ru/docusaurus-plugin-content-docs/current/guide/air-gapped-installations.md +++ b/i18n/ru/docusaurus-plugin-content-docs/current/guide/air-gapped-installations.md @@ -125,4 +125,6 @@ node -v :::tip[Certified Builds] [`air_gapped`](../cfg/registry#available-registry-keys) управляет offline-поведением лицензии/JWKS для зеркал Author _(Governance)_. Она **не** указывает установкам Node локальную папку архивов. Для этого используйте [`local_dir`](../cfg/registry#available-registry-keys)/[`local_install_only`](../cfg/registry#available-registry-keys) (или шаги выше). + +Если `AirGapped` включён и `malware.db` нет на диске, shim пропускает проверки malware. Скопируйте действующий `malware.db` в корень данных NVM, если проверки нужны. Повреждённый файл всё равно блокирует. :::